diff --git a/app.js b/app.js index 89370b4..9e9e2a9 100644 --- a/app.js +++ b/app.js @@ -20,6 +20,7 @@ var express = require('express') , http = require('http') , jsdom = require('jsdom'); +var logger = require('./lib/logger.js'); jsonld.use('request'); @@ -78,6 +79,7 @@ everyauth.facebook }; dao.users.insert(our_user, function (error, inserted) { if (error) { + logger.logger.error(error); userPromise.fail(error); } else { var inserted_user = inserted[0] @@ -99,14 +101,12 @@ everyauth.password .postLoginPath('/login') // Uri path that your login form POSTs to .loginView('login') .authenticate( function (email, password) { - console.log(email + " " + password); - var hash_password = crypto.createHash('md5').update(password).digest('hex'); var userPromise = this.Promise(); dao.users.findByEmailAndPassword(email, hash_password, function (error, found_user) { if (error) { -// console.log("Error: "+error); + logger.logger.error(error); userPromise.fulfill([error]); } if (found_user) { @@ -340,9 +340,9 @@ app.get('/redirect', function(req,res){ redirectTo = "/"; res.redirect(redirectTo); }); -console.log(app.get('port')); + http.createServer(app).listen(app.get('port'), process.env.IP ||"0.0.0.0", function () { - console.log('Express server listening on port ' + app.get('port')); + logger.accessLogger.info('Express server listening on port ' + app.get('port')); }); diff --git a/lib/helper.js b/lib/helper.js new file mode 100644 index 0000000..a1c9cf5 --- /dev/null +++ b/lib/helper.js @@ -0,0 +1,93 @@ +var helper = (function () { + return { + /** + * Looking for a value in array + * @param needle - value that we would like to find + * @param haystack - array to check + * @param argStrict - type of checking (=== or ==) - boolean + * @returns {boolean} + */ + in_array: function (needle, haystack, argStrict) { + var key = '', + strict = !!argStrict; + + if (strict) { + for (key in haystack) { + if (haystack[key] === needle) { + return true; + } + } + } else { + for (key in haystack) { + if (haystack[key] == needle) { + return true; + } + } + } + + return false; + }, + + /** + * Cloning the object/array + * @param obj + * @returns {*} + */ + clone: function (obj) { + // Handle the 3 simple types, and null or undefined + if (null == obj || "object" != typeof obj) return obj; + + // Handle Date + if (obj instanceof Date) { + var copy = new Date(); + copy.setTime(obj.getTime()); + return copy; + } + + // Handle Array + if (obj instanceof Array) { + var copy = []; + for (var i = 0, len = obj.length; i < len; i++) { + copy[i] = this.clone(obj[i]); + } + return copy; + } + + // Handle Object + if (obj instanceof Object) { + var copy = {}; + for (var attr in obj) { + if (obj.hasOwnProperty(attr)) copy[attr] = this.clone(obj[attr]); + } + return copy; + } + + throw new Error("Unable to copy obj! Its type isn't supported."); + }, + + /** + * Do the string "fdfasdf wfqw cQDASD" as "Fdfasdf Wfgq Cqdasd" + * @param string + * @returns {string} + */ + capitalize: function (string) { +// return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase(); +// return string.replace(/\b./g, function(m){ return m.toUpperCase(); }); + var strArr = string.split(" "); + var newArr = []; + + for (var i = 0; i < strArr.length; i++) { + + var FirstLetter = strArr[i].charAt(0).toUpperCase(); + var restOfWord = strArr[i].slice(1).toLowerCase(); + + newArr[i] = FirstLetter + restOfWord; + + } + + return newArr.join(' '); + } + } +}); + +module.exports = helper; \ No newline at end of file diff --git a/lib/logger.js b/lib/logger.js new file mode 100644 index 0000000..00843b1 --- /dev/null +++ b/lib/logger.js @@ -0,0 +1,59 @@ +var winston = require('winston'); + +var customLevels = { + levels: { + debug: 0, + info: 1, + warn: 2, + error: 3 + }, + colors: { + debug: 'blue', + info: 'green', + warn: 'yellow', + error: 'red' + } +}; + +var logger = new (winston.Logger)({ + level: 'debug', + levels: customLevels.levels, + transports: [ + new winston.transports.File({ + filename: __dirname+'/../logs/debug.log', + + maxsize: 1024 * 1024 * 10, // 10MB + levels: customLevels.levels, + level: 'debug', + json: false + }) + ], + exceptionHandlers: [ + new winston.transports.Console(), + new winston.transports.File({ + filename: __dirname+'/../logs/exceptions.log', + json: false + }) + ], + exitOnError: false +}); + +var accessLoger = new (winston.Logger)({ + level: 'debug', + levels: customLevels.levels, + transports: [ + new winston.transports.File({ + filename: __dirname+'/../logs/access.log', + + maxsize: 1024 * 1024 * 10, // 10MB + levels: customLevels.levels, + level: 'debug', + json: false + }) + ] +}); + +// make winston aware of your awesome colour choices +winston.addColors(customLevels.colors); + +module.exports = { logger: logger, accessLogger: accessLoger }; \ No newline at end of file diff --git a/routes/index.js b/routes/index.js index 553e3b7..8434e79 100644 --- a/routes/index.js +++ b/routes/index.js @@ -14,14 +14,7 @@ var fs = require('fs'); require('../config.settings'); // include settings -//var wikiTemplate; -//fs.readFile(__dirname + '/../views/wiki.html', function (err, template) { -// if (err) { -// throw err; -// } else { -// wikiTemplate = template.toString(); -// } -//}); +var logger = require('./lib/logger.js'); var path = require('path');