File tree Expand file tree Collapse file tree
server/src/routes/auth/keycloak Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -24,8 +24,9 @@ async function getUserProfile(request: NextRequest): Promise<User | null> {
2424 return userProfile ?. data ?? null
2525}
2626
27- function redirectUnauthenticated ( _request : NextRequest ) {
28- return NextResponse . redirect ( new URL ( "/auth/keycloak/login" , siteConfig . apiUrl ) )
27+ function redirectUnauthenticated ( request : NextRequest ) {
28+ const loginUrl = new URL ( `/auth/keycloak/login?destination=${ request . url } ` , siteConfig . apiUrl )
29+ return NextResponse . redirect ( loginUrl )
2930}
3031
3132function redirectForbidden ( request : NextRequest ) {
Original file line number Diff line number Diff line change @@ -59,12 +59,20 @@ export class KeycloakHandlers {
5959 return codeVerifier
6060 }
6161
62+ private static rememberDestination ( request : Request , response : Response , session : DurHackSession ) : void {
63+ const destination = request . query . destination != null ? destinationUrlSchema . parse ( request . query . destination ) : null
64+
65+ if ( session . redirectTo == null && destination ?. href == null ) return
66+ if ( session . redirectTo === destination ?. href ) return
67+
68+ session . redirectTo = destination ?. href
69+ response . sessionDirty = true
70+ }
71+
6272 beginOAuth2Flow ( ) : Middleware {
6373 return async ( request : Request , response : Response ) => {
64- const destination =
65- request . query . destination != null ? destinationUrlSchema . parse ( request . query . destination ) : null
6674 const session = await getSession ( request , response )
67- session . redirectTo = destination ?. href
75+ KeycloakHandlers . rememberDestination ( request , response , session )
6876
6977 this . lazyLogout ( response , session )
7078 const codeVerifier = this . getOrGenerateCodeVerifier ( response , session )
You can’t perform that action at this time.
0 commit comments