@@ -183,9 +183,23 @@ func (controller *OAuthController) oauthCallbackHandler(c *gin.Context) {
183183 return
184184 }
185185
186- if ! controller .auth .IsEmailWhitelisted (user .Email ) {
186+ svc , err := controller .auth .GetOAuthService (sessionIdCookie )
187+
188+ if err != nil {
189+ controller .log .App .Error ().Err (err ).Msg ("Failed to get OAuth service for session" )
190+ c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .runtime .AppURL ))
191+ return
192+ }
193+
194+ if svc .ID () != req .Provider {
195+ controller .log .App .Warn ().Msgf ("OAuth provider mismatch: expected %s, got %s" , req .Provider , svc .ID ())
196+ c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .runtime .AppURL ))
197+ return
198+ }
199+
200+ if ! controller .auth .IsEmailWhitelisted (svc .ID (), user .Email ) {
187201 controller .log .App .Warn ().Str ("email" , user .Email ).Msg ("Email not whitelisted, denying access" )
188- controller .log .AuditLoginFailure (user .Email , req . Provider , c .ClientIP (), "email not whitelisted" )
202+ controller .log .AuditLoginFailure (user .Email , svc . ID () , c .ClientIP (), "email not whitelisted" )
189203
190204 queries , err := query .Values (UnauthorizedQuery {
191205 Username : user .Email ,
@@ -226,20 +240,6 @@ func (controller *OAuthController) oauthCallbackHandler(c *gin.Context) {
226240 username = strings .Replace (user .Email , "@" , "_" , 1 )
227241 }
228242
229- svc , err := controller .auth .GetOAuthService (sessionIdCookie )
230-
231- if err != nil {
232- controller .log .App .Error ().Err (err ).Msg ("Failed to get OAuth service for session" )
233- c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .runtime .AppURL ))
234- return
235- }
236-
237- if svc .ID () != req .Provider {
238- controller .log .App .Warn ().Msgf ("OAuth provider mismatch: expected %s, got %s" , req .Provider , svc .ID ())
239- c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .runtime .AppURL ))
240- return
241- }
242-
243243 sessionCookie := repository.Session {
244244 Username : username ,
245245 Name : name ,
0 commit comments