From 40967ce7e2dffa85b8749d4fb9b869b91e427f70 Mon Sep 17 00:00:00 2001 From: Cheng-Han, Wu Date: Fri, 20 May 2016 03:02:07 +0800 Subject: Update to make user profile auto update on authentication --- lib/auth.js | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) (limited to 'lib/auth.js') 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); -- cgit v1.2.3