11'use strict' ;
22
3- const User = require . main . require ( './src/user' ) ;
4- const Groups = require . main . require ( './src/groups' ) ;
5- const db = require . main . require ( './src/database' ) ;
6- const authenticationController = require . main . require ( './src/controllers/authentication' ) ;
7- const routeHelpers = require . main . require ( './src/routes/helpers' ) ;
8-
93const passport = module . parent . require ( 'passport' ) ;
104const nconf = module . parent . require ( 'nconf' ) ;
115const winston = module . parent . require ( 'winston' ) ;
126
7+ const db = require . main . require ( './src/database' ) ;
8+ const user = require . main . require ( './src/user' ) ;
9+ const plugins = require . main . require ( './src/plugins' ) ;
10+ const authenticationController = require . main . require ( './src/controllers/authentication' ) ;
11+ const routeHelpers = require . main . require ( './src/routes/helpers' ) ;
12+
1313const OAuth = module . exports ;
1414
1515OAuth . init = async ( params ) => {
@@ -77,7 +77,8 @@ OAuth.loadStrategies = async (strategies) => {
7777 clientSecret,
7878 callbackURL,
7979 passReqToCallback : true ,
80- } , async ( req , token , secret , { id, displayName, email } , done ) => {
80+ } , async ( req , token , secret , profile , done ) => {
81+ const { id, displayName, email } = profile ;
8182 if ( ! [ id , displayName , email ] . every ( Boolean ) ) {
8283 return done ( new Error ( 'insufficient-scope' ) ) ;
8384 }
@@ -89,6 +90,7 @@ OAuth.loadStrategies = async (strategies) => {
8990 email,
9091 } ) ;
9192
93+ winston . verbose ( `[plugin/sso-oauth2-multiple] Successful login to uid ${ user . uid } via ${ name } (remote id ${ id } )` ) ;
9294 authenticationController . onSuccessfulLogin ( req , user . uid ) ;
9395 done ( null , user ) ;
9496 } ) ) ;
@@ -139,12 +141,16 @@ OAuth.getUserProfile = function (name, userRoute, accessToken, done) {
139141 } ) ;
140142} ;
141143
142- OAuth . parseUserReturn = ( { id, sub, name, nickname, preferred_username, picture, email/* , email_verified */ } ) => {
143- const profile = { } ;
144- profile . id = id || sub ;
145- profile . displayName = nickname || preferred_username || name ;
146- profile . picture = picture ;
147- profile . email = email ;
144+ OAuth . parseUserReturn = ( {
145+ provider, id, sub, name, nickname, preferred_username, picture, email, /* , email_verified */
146+ } ) => {
147+ const profile = {
148+ provider,
149+ id : id || sub ,
150+ displayName : nickname || preferred_username || name ,
151+ picture,
152+ email,
153+ } ;
148154
149155 return profile ;
150156} ;
@@ -157,22 +163,22 @@ OAuth.login = async (payload) => {
157163 }
158164
159165 // Check for user via email fallback
160- uid = await User . getUidByEmail ( payload . email ) ;
166+ uid = await user . getUidByEmail ( payload . email ) ;
161167 if ( ! uid ) {
162168 const { email } = payload ;
163169
164170 // New user
165- uid = await User . create ( {
171+ uid = await user . create ( {
166172 username : payload . handle ,
167173 } ) ;
168174
169175 // Automatically confirm user email
170- await User . setUserField ( uid , 'email' , email ) ;
171- await User . email . confirmByUid ( uid ) ;
176+ await user . setUserField ( uid , 'email' , email ) ;
177+ await user . email . confirmByUid ( uid ) ;
172178 }
173179
174180 // Save provider-specific information to the user
175- await User . setUserField ( uid , `${ payload . name } Id` , payload . oAuthid ) ;
181+ await user . setUserField ( uid , `${ payload . name } Id` , payload . oAuthid ) ;
176182 await db . setObjectField ( `${ payload . name } Id:uid` , payload . oAuthid , uid ) ;
177183
178184 return { uid } ;
@@ -182,7 +188,7 @@ OAuth.getUidByOAuthid = async (name, oAuthid) => db.getObjectField(`${name}Id:ui
182188
183189OAuth . deleteUserData = async ( data ) => {
184190 const names = await db . getSortedSetMembers ( 'oauth2-multiple:strategies' ) ;
185- const oAuthIds = await User . getUserFields ( data . uid , names . map ( name => `${ name } Id` ) ) ;
191+ const oAuthIds = await user . getUserFields ( data . uid , names . map ( name => `${ name } Id` ) ) ;
186192
187193 await Promise . all ( oAuthIds . map ( async ( oAuthIdToDelete , idx ) => {
188194 if ( ! oAuthIdToDelete ) {
0 commit comments