diff --git a/index.js b/index.js index bef704f..963eab4 100644 --- a/index.js +++ b/index.js @@ -16,8 +16,17 @@ var Measurement = require('./googleMeasurement.js'); var cookieParser = require('cookie-parser'); var BasicStrategy = require('passport-http').BasicStrategy; var LocalStrategy = require('passport-local').Strategy; +var SimpleNodeLogger = require('simple-node-logger'); var PassportOAuthBearer = require('passport-http-bearer'); +var loggingOptions = { + logDirectory: 'log', + fileNamePattern:'debug-.log', + timestampFormat:'YYYY-MM-DD HH:mm:ss.SSS', + dateFormat:'YYYY.MM.DD' +}; + +var logger = SimpleNodeLogger.createRollingFileLogger(loggingOptions); var oauthServer = require('./oauth'); @@ -147,6 +156,7 @@ Account.findOne({username: mqtt_user}, function(error, account){ { multi: false }, function(err, count){ if (err) { + logger.info("error adding MQTT account\n", err); console.log(err); } } @@ -232,10 +242,10 @@ passport.deserializeUser(Account.deserializeUser()); var accessTokenStrategy = new PassportOAuthBearer(function(token, done) { oauthModels.AccessToken.findOne({ token: token }).populate('user').populate('grant').exec(function(error, token) { - if (!error) { - // console.log("db token: " + token.active); - // console.log("db token.grant : " + token.grant.active); - // console.log("db token.user: " + token.user); + if (!error && token) { + logger.info("db token: ", token.active); + logger.info("db token.grant : ", token.grant.active); + logger.ifo("db token.user: ", token.user); } if (!error && token && token.active && token.grant.active && token.user) { // console.log("Token is GOOD!"); @@ -313,6 +323,7 @@ app.get('/newuser', function(req,res){ app.post('/newuser', function(req,res){ Account.register(new Account({ username : req.body.username, email: req.body.email, mqttPass: "foo" }), req.body.password, function(err, account) { if (err) { + logger.info("new user problem\n", err); console.log(err); return res.status(400).send(err.message); } @@ -344,6 +355,7 @@ app.post('/newuser', function(req,res){ }); passport.authenticate('local')(req, res, function () { + logger.info("created new user ", req.body.username); console.log("created new user %s", req.body.username); measurement.send({ t:'event', @@ -394,6 +406,7 @@ app.post('/changePassword', ensureAuthenticated, function(req, res, next){ //console.log("Chagned %s's password", u.username); res.status(200).send(); } else { + logger.info("Error changing ", u.username, "'s password"); console.log("Error changing %s's password", u.username); console.log(error); res.status(400).send("Problem setting new password"); @@ -552,6 +565,7 @@ app.get('/api/v1/devices', devs.push(dev); } + logger.info(user , " discovering " , JSON.stringify(devs) ); //console.log(devs) res.send(devs); } diff --git a/oauth.js b/oauth.js index 588cb07..fe1d582 100644 --- a/oauth.js +++ b/oauth.js @@ -9,6 +9,8 @@ server.grant(oauth2orize.grant.code({ //console.log("grant user: ", user); OAuth.GrantCode.findOne({application: application, user: user},function(error,grant){ if (!error && grant) { + //console.log("Grant, existing grant code found"); + //console.log("%j", grant); done(null,grant.code); } else if (!error) { var grant = new OAuth.GrantCode({ @@ -39,21 +41,26 @@ server.exchange(oauth2orize.exchange.code({ }, function(application, code, redirectURI, done) { OAuth.GrantCode.findOne({ code: code }, function(error, grant) { if (grant && grant.active && grant.application == application.id) { - + //console.log("exchange, found grant code") OAuth.AccessToken.findOne({application:application, user: grant.user, active: true}, function(error,token){ if (token) { + //console.log("Active access token found"); + //console.log("%j", token); OAuth.RefreshToken.findOne({application:application, user: grant.user},function(error, refreshToken){ if (refreshToken){ var expires = Math.round((token.expires - (new Date().getTime()))/1000); done(null,token.token, refreshToken.token,{token_type: 'Bearer', expires_in: expires}); - console.log("sent expires_in: " + expires); + //console.log("refresh token found, sent expires_in: " + expires); } else { // Shouldn't get here unless there is an error as there // should be a refresh token if there is an access token + console.log("no refresh token found for existing access token"); + console.log("%j",error); done(error); } }); } else if (!error) { + console.log("exchange, no access token found"); var token = new OAuth.AccessToken({ application: grant.application, user: grant.user, @@ -66,27 +73,33 @@ server.exchange(oauth2orize.exchange.code({ //delete old refreshToken or reuse? OAuth.RefreshToken.findOne({application:application, user: grant.user},function(error, refreshToken){ if (refreshToken) { + console.log("Should never get here, new accessToken with old refresh token"); done(error, error ? null : token.token, refreshToken.token, error ? null : { token_type: 'Bearer', expires_in: expires, scope: token.scope}); } else if (!error) { + //console.log("creating new refresh token") var refreshToken = new OAuth.RefreshToken({ user: grant.user, application: grant.application }); refreshToken.save(function(error){ + //console.log("sending new token access and refresh token"); done(error, error ? null : token.token, refreshToken.token, error ? null : { token_type: 'Bearer', expires_in: expires, scope: token.scope }); }); } else { + console.log("err1"); done(error); } }); }); } else { + console.log("err2"); done(error); } }); } else { + console.log("err3"); done(error, false); } }); @@ -95,7 +108,7 @@ server.exchange(oauth2orize.exchange.code({ server.exchange(oauth2orize.exchange.refreshToken({ userProperty: 'appl' }, function(application, token, scope, done){ - console.log("Yay!"); + //console.log("Yay!"); OAuth.RefreshToken.findOne({token: token}, function(error, refresh){ if (refresh && refresh.application == application.id) { OAuth.GrantCode.findOne({},function(error, grant){ diff --git a/package.json b/package.json index 78cfe60..4513b0b 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "querystring": "^0.2.0", "request": "^2.79.0", "rotating-file-stream": "^1.3.6", + "simple-node-logger": "^0.93.40", "uid2": "0.0.3" }, "devDependencies": {