@@ -131,7 +131,7 @@ func (controller *OAuthController) oauthCallbackHandler(c *gin.Context) {
131131
132132 if err != nil {
133133 controller .log .App .Error ().Err (err ).Msg ("Failed to get OAuth session cookie" )
134- c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .config .AppURL ))
134+ c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .runtime .AppURL ))
135135 return
136136 }
137137
@@ -141,7 +141,7 @@ func (controller *OAuthController) oauthCallbackHandler(c *gin.Context) {
141141
142142 if err != nil {
143143 controller .log .App .Error ().Err (err ).Msg ("Failed to get pending OAuth session" )
144- c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .config .AppURL ))
144+ c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .runtime .AppURL ))
145145 return
146146 }
147147
@@ -150,7 +150,7 @@ func (controller *OAuthController) oauthCallbackHandler(c *gin.Context) {
150150 state := c .Query ("state" )
151151 if state != oauthPendingSession .State {
152152 controller .log .App .Warn ().Msg ("OAuth state mismatch" )
153- c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .config .AppURL ))
153+ c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .runtime .AppURL ))
154154 return
155155 }
156156
@@ -159,15 +159,27 @@ func (controller *OAuthController) oauthCallbackHandler(c *gin.Context) {
159159
160160 if err != nil {
161161 controller .log .App .Error ().Err (err ).Msg ("Failed to exchange code for token" )
162- c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .config .AppURL ))
162+ c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .runtime .AppURL ))
163163 return
164164 }
165165
166166 user , err := controller .auth .GetOAuthUserinfo (sessionIdCookie )
167167
168+ if err != nil {
169+ controller .log .App .Error ().Err (err ).Msg ("Failed to get user info from OAuth provider" )
170+ c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .runtime .AppURL ))
171+ return
172+ }
173+
174+ if user == nil {
175+ controller .log .App .Warn ().Msg ("OAuth provider did not return user info" )
176+ c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .runtime .AppURL ))
177+ return
178+ }
179+
168180 if user .Email == "" {
169181 controller .log .App .Warn ().Msg ("OAuth provider did not return an email" )
170- c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .config .AppURL ))
182+ c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .runtime .AppURL ))
171183 return
172184 }
173185
@@ -181,11 +193,11 @@ func (controller *OAuthController) oauthCallbackHandler(c *gin.Context) {
181193
182194 if err != nil {
183195 controller .log .App .Error ().Err (err ).Msg ("Failed to encode unauthorized query" )
184- c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .config .AppURL ))
196+ c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .runtime .AppURL ))
185197 return
186198 }
187199
188- c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/unauthorized?%s" , controller .config .AppURL , queries .Encode ()))
200+ c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/unauthorized?%s" , controller .runtime .AppURL , queries .Encode ()))
189201 return
190202 }
191203
@@ -213,13 +225,13 @@ func (controller *OAuthController) oauthCallbackHandler(c *gin.Context) {
213225
214226 if err != nil {
215227 controller .log .App .Error ().Err (err ).Msg ("Failed to get OAuth service for session" )
216- c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .config .AppURL ))
228+ c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .runtime .AppURL ))
217229 return
218230 }
219231
220232 if svc .ID () != req .Provider {
221233 controller .log .App .Warn ().Msgf ("OAuth provider mismatch: expected %s, got %s" , req .Provider , svc .ID ())
222- c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .config .AppURL ))
234+ c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .runtime .AppURL ))
223235 return
224236 }
225237
@@ -239,7 +251,7 @@ func (controller *OAuthController) oauthCallbackHandler(c *gin.Context) {
239251
240252 if err != nil {
241253 controller .log .App .Error ().Err (err ).Msg ("Failed to create session cookie" )
242- c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .config .AppURL ))
254+ c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .runtime .AppURL ))
243255 return
244256 }
245257
@@ -252,10 +264,10 @@ func (controller *OAuthController) oauthCallbackHandler(c *gin.Context) {
252264 queries , err := query .Values (oauthPendingSession .CallbackParams )
253265 if err != nil {
254266 controller .log .App .Error ().Err (err ).Msg ("Failed to encode OIDC callback query" )
255- c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .config .AppURL ))
267+ c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .runtime .AppURL ))
256268 return
257269 }
258- c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/authorize?%s" , controller .config .AppURL , queries .Encode ()))
270+ c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/authorize?%s" , controller .runtime .AppURL , queries .Encode ()))
259271 return
260272 }
261273
@@ -266,15 +278,15 @@ func (controller *OAuthController) oauthCallbackHandler(c *gin.Context) {
266278
267279 if err != nil {
268280 controller .log .App .Error ().Err (err ).Msg ("Failed to encode redirect query" )
269- c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .config .AppURL ))
281+ c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/error" , controller .runtime .AppURL ))
270282 return
271283 }
272284
273- c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/continue?%s" , controller .config .AppURL , queries .Encode ()))
285+ c .Redirect (http .StatusTemporaryRedirect , fmt .Sprintf ("%s/continue?%s" , controller .runtime .AppURL , queries .Encode ()))
274286 return
275287 }
276288
277- c .Redirect (http .StatusTemporaryRedirect , controller .config .AppURL )
289+ c .Redirect (http .StatusTemporaryRedirect , controller .runtime .AppURL )
278290}
279291
280292func (controller * OAuthController ) isOidcRequest (params service.OAuthURLParams ) bool {
0 commit comments