@@ -14,29 +14,44 @@ var models = require("./models");
1414
1515function callback ( accessToken , refreshToken , profile , done ) {
1616 //logger.info(profile.displayName || profile.username);
17+ var stringifiedProfile = JSON . stringify ( profile ) ;
1718 models . User . findOrCreate ( {
1819 where : {
1920 profileid : profile . id . toString ( )
2021 } ,
2122 defaults : {
22- profile : JSON . stringify ( profile ) ,
23+ profile : stringifiedProfile ,
2324 accessToken : accessToken ,
2425 refreshToken : refreshToken
2526 }
2627 } ) . spread ( function ( user , created ) {
2728 if ( user ) {
28- if ( user . accessToken == accessToken ) {
29- if ( config . debug )
30- logger . info ( ' user login: ' + user . id ) ;
31- return done ( null , user ) ;
29+ var needSave = false ;
30+ if ( user . profile != stringifiedProfile ) {
31+ user . profile = stringifiedProfile ;
32+ needSave = true ;
3233 }
33- user . accessToken = accessToken ;
34- user . refreshToken = refreshToken ;
35- user . save ( ) . then ( function ( ) {
34+ if ( user . accessToken != accessToken ) {
35+ user . accessToken = accessToken ;
36+ needSave = true ;
37+
38+ }
39+ if ( user . refreshToken != refreshToken ) {
40+ user . refreshToken = refreshToken ;
41+ needSave = true ;
42+
43+ }
44+ if ( needSave ) {
45+ user . save ( ) . then ( function ( ) {
46+ if ( config . debug )
47+ logger . info ( 'user login: ' + user . id ) ;
48+ return done ( null , user ) ;
49+ } ) ;
50+ } else {
3651 if ( config . debug )
3752 logger . info ( 'user login: ' + user . id ) ;
3853 return done ( null , user ) ;
39- } )
54+ }
4055 }
4156 } ) . catch ( function ( err ) {
4257 logger . error ( 'auth callback failed: ' + err ) ;
0 commit comments