@@ -96,9 +96,7 @@ export class Users {
9696 let accessToken : string | undefined ;
9797 let verifiedUser : { id : string ; email : string ; username : string } ;
9898
99- // Échange le code contre un access_token
10099 if ( provider === "discord" ) {
101- // Échange code contre access_token
102100 const params = new URLSearchParams ( {
103101 client_id : process . env . DISCORD_CLIENT_ID ! ,
104102 client_secret : process . env . DISCORD_CLIENT_SECRET ! ,
@@ -114,6 +112,7 @@ export class Users {
114112 if ( ! tokenRes . ok ) return this . sendError ( res , 500 , "Failed to fetch Discord access token" ) ;
115113 const tokenData = await tokenRes . json ( ) ;
116114 accessToken = tokenData . access_token ;
115+ verifiedUser = await this . verifyDiscordToken ( accessToken ! ) ;
117116 } else if ( provider === "google" ) {
118117 const params = new URLSearchParams ( {
119118 client_id : process . env . GOOGLE_CLIENT_ID ! ,
@@ -130,30 +129,25 @@ export class Users {
130129 if ( ! tokenRes . ok ) return this . sendError ( res , 500 , "Failed to fetch Google access token" ) ;
131130 const tokenData = await tokenRes . json ( ) ;
132131 accessToken = tokenData . access_token ;
132+ verifiedUser = await this . verifyGoogleToken ( accessToken ! ) ;
133133 } else {
134134 return this . sendError ( res , 400 , "Unsupported OAuth provider" ) ;
135135 }
136136
137- // Récupère les infos utilisateur depuis le provider
138- if ( provider === "discord" ) {
139- verifiedUser = await this . verifyDiscordToken ( accessToken ! ) ;
140- } else /*if (provider === "google")*/ {
141- verifiedUser = await this . verifyGoogleToken ( accessToken ! ) ;
142- }
143-
144- // Utilise verifiedUser.id, verifiedUser.email, verifiedUser.username pour la suite
145137 const users = await this . userService . getAllUsersWithDisabled ( ) ;
146138 const token = req . headers [ "cookie" ] ?. toString ( ) . split ( "token=" ) [ 1 ] ?. split ( ";" ) [ 0 ] ;
147-
148139 let user = await this . userService . authenticateUser ( token as string ) ;
149140
150- if ( typeof verifiedUser === "undefined" ) {
141+ if ( ! verifiedUser ) {
151142 await this . createLog ( req , "loginOAuth" , "users" , 500 ) ;
152143 return this . sendError ( res , 500 , "Failed to verify OAuth user" ) ;
153144 }
154145
155146 if ( ! user ) {
156- user = users . find ( ( u ) => u . discord_id == verifiedUser . id || u . google_id == verifiedUser . id ) || null ;
147+ user = users . find ( ( u ) =>
148+ ( provider === "discord" && u . discord_id == verifiedUser . id ) ||
149+ ( provider === "google" && u . google_id == verifiedUser . id )
150+ ) || null ;
157151 }
158152
159153 if ( ! user ) {
@@ -164,17 +158,18 @@ export class Users {
164158 if ( ( provider === "discord" && ! user . discord_id ) || ( provider === "google" && ! user . google_id ) ) {
165159 await this . userService . associateOAuth ( user . user_id , provider , verifiedUser . id ) ;
166160 }
167- if ( ( provider === "discord" && user . discord_id && user . discord_id != verifiedUser . id ) || ( provider === "google" && user . google_id && user . google_id != verifiedUser . id ) ) {
161+ if ( ( provider === "discord" && user . discord_id && user . discord_id != verifiedUser . id ) ||
162+ ( provider === "google" && user . google_id && user . google_id != verifiedUser . id ) ) {
168163 await this . createLog ( req , "loginOAuth" , "users" , 401 , user . user_id ) ;
169164 return this . sendError ( res , 401 , "OAuth providerId mismatch" ) ;
170165 }
171166 }
172-
167+
173168 if ( user . disabled ) {
174169 await this . createLog ( req , "loginOAuth" , "users" , 403 , user . user_id ) ;
175170 return this . sendError ( res , 403 , "Account is disabled" ) ;
176171 }
177-
172+
178173 await this . createLog ( req , "loginOAuth" , "users" , 200 , user . user_id ) ;
179174 const apiKey = genKey ( user . user_id ) ;
180175 const jwtToken = generateUserJwt ( user , apiKey ) ;
0 commit comments