@@ -19,30 +19,42 @@ export const createShowLogoutRoute: RouteCreator =
19
19
20
20
if ( typeof logoutChallenge !== "string" ) {
21
21
logger . debug ( "Expected a logout challenge to be set but received none." )
22
- next (
23
- new Error ( "Expected a logout challenge to be set but received none." ) ,
24
- )
22
+ res . redirect ( "login" )
25
23
return
26
24
}
27
25
28
- // this should never happen
29
- if ( ! req . csrfToken ) {
30
- logger . warn ( "Expected CSRF token middleware to be set but received none." )
31
- next (
32
- new Error (
33
- "Expected CSRF token middleware to be set but received none." ,
34
- ) ,
35
- )
36
- return
37
- }
26
+ const { oauth2, shouldSkipLogoutConsent } = createHelpers ( req , res )
27
+ oauth2
28
+ . getOAuth2LogoutRequest ( { logoutChallenge } )
29
+ . then ( ( { data : body } ) => {
30
+ if ( shouldSkipLogoutConsent ( body ) ) {
31
+ return oauth2
32
+ . acceptOAuth2LogoutRequest ( { logoutChallenge } )
33
+ . then ( ( { data : body } ) => res . redirect ( body . redirect_to ) )
34
+ }
35
+
36
+ // this should never happen
37
+ if ( ! req . csrfToken ) {
38
+ logger . warn (
39
+ "Expected CSRF token middleware to be set but received none." ,
40
+ )
41
+ next (
42
+ new Error (
43
+ "Expected CSRF token middleware to be set but received none." ,
44
+ ) ,
45
+ )
46
+ return
47
+ }
38
48
39
- res . render ( "logout" , {
40
- card : UserLogoutCard ( {
41
- csrfToken : req . csrfToken ( true ) ,
42
- challenge : logoutChallenge ,
43
- action : "logout" ,
44
- } ) ,
45
- } )
49
+ res . render ( "logout" , {
50
+ card : UserLogoutCard ( {
51
+ csrfToken : req . csrfToken ( true ) ,
52
+ challenge : logoutChallenge ,
53
+ action : "logout" ,
54
+ } ) ,
55
+ } )
56
+ } )
57
+ . catch ( ( ) => res . redirect ( "login" ) )
46
58
}
47
59
48
60
export const createSubmitLogoutRoute : RouteCreator =
@@ -60,15 +72,15 @@ export const createSubmitLogoutRoute: RouteCreator =
60
72
// The user rejected to log out, so we'll redirect to /ui/welcome
61
73
return oauth2
62
74
. rejectOAuth2LogoutRequest ( { logoutChallenge } )
63
- . then ( ( ) => res . redirect ( "welcome " ) )
64
- . catch ( ( ) => res . redirect ( "welcome " ) )
75
+ . then ( ( ) => res . redirect ( "login " ) )
76
+ . catch ( ( ) => res . redirect ( "login " ) )
65
77
} else {
66
78
logger . debug ( "User agreed to log out." )
67
79
// The user agreed to log out, let's accept the logout request.
68
80
return oauth2
69
81
. acceptOAuth2LogoutRequest ( { logoutChallenge } )
70
82
. then ( ( { data : body } ) => res . redirect ( body . redirect_to ) )
71
- . catch ( ( ) => res . redirect ( "welcome " ) )
83
+ . catch ( ( ) => res . redirect ( "login " ) )
72
84
}
73
85
}
74
86
0 commit comments