import { User } from '../../models' import { logger } from '../../logger' export function passportGeneralCallback ( accessToken, refreshToken, profile, done: (err: any, user: User | null) => void ): void { const stringifiedProfile = JSON.stringify(profile) User.findOrCreate({ where: { profileid: profile.id.toString() }, defaults: { profile: stringifiedProfile, accessToken: accessToken, refreshToken: refreshToken } }).then(function ([user, _]) { if (user) { let needSave = false if (user.profile !== stringifiedProfile) { user.profile = stringifiedProfile needSave = true } if (user.accessToken !== accessToken) { user.accessToken = accessToken needSave = true } if (user.refreshToken !== refreshToken) { user.refreshToken = refreshToken needSave = true } if (needSave) { user.save().then(function () { logger.debug(`user login: ${user.id}`) return done(null, user) }) } else { logger.debug(`user login: ${user.id}`) return done(null, user) } } }).catch(function (err) { logger.error('auth callback failed: ' + err) return done(err, null) }) }