diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/auth.js | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/lib/auth.js b/lib/auth.js index 087937b7..2915de11 100644 --- a/lib/auth.js +++ b/lib/auth.js @@ -14,29 +14,44 @@ var models = require("./models"); function callback(accessToken, refreshToken, profile, done) { //logger.info(profile.displayName || profile.username); + var stringifiedProfile = JSON.stringify(profile); models.User.findOrCreate({ where: { profileid: profile.id.toString() }, defaults: { - profile: JSON.stringify(profile), + profile: stringifiedProfile, accessToken: accessToken, refreshToken: refreshToken } }).spread(function (user, created) { if (user) { - if (user.accessToken == accessToken) { - if (config.debug) - logger.info('user login: ' + user.id); - return done(null, user); + var needSave = false; + if (user.profile != stringifiedProfile) { + user.profile = stringifiedProfile; + needSave = true; } - user.accessToken = accessToken; - user.refreshToken = refreshToken; - user.save().then(function () { + if (user.accessToken != accessToken) { + user.accessToken = accessToken; + needSave = true; + + } + if (user.refreshToken != refreshToken) { + user.refreshToken = refreshToken; + needSave = true; + + } + if (needSave) { + user.save().then(function () { + if (config.debug) + logger.info('user login: ' + user.id); + return done(null, user); + }); + } else { if (config.debug) logger.info('user login: ' + user.id); return done(null, user); - }) + } } }).catch(function (err) { logger.error('auth callback failed: ' + err); |