@@ -2,13 +2,16 @@ import * as http from 'http'
22import { defineEventHandler , getCookie , setCookie , deleteCookie } from 'h3'
33import { initClient } from '../../../utils/issueclient'
44import { encrypt } from '../../../utils/encrypt'
5- import { getRedirectUrl , getCallbackUrl , getDefaultBackUrl , getResponseMode , setCookieInfo , setCookieTokenAndRefreshToken } from '../../../utils/utils'
5+ import { getRedirectUrl , getCallbackUrl , getDefaultBackUrl , getResponseMode , setCookieInfo , setCookieTokenAndRefreshToken , getCleanUrl } from '../../../utils/utils'
66import { useRuntimeConfig } from '#imports'
77
88export default defineEventHandler ( async ( event ) => {
9+ console . log ( '---------oidc nitro --------------' )
910 const req = event . node . req
1011 const res = event . node . res
1112 console . log ( '[CALLBACK]: oidc/callback calling, method:' + req . method )
13+ const { app } = useRuntimeConfig ( )
14+ const baseUrl = app . baseURL
1215
1316 let request = req
1417 if ( req . method === 'POST' ) {
@@ -25,11 +28,12 @@ export default defineEventHandler(async (event) => {
2528 const responseMode = getResponseMode ( config )
2629 const sessionid = getCookie ( event , config . secret )
2730 deleteCookie ( event , config . secret )
31+ // Note: here not need add baseUrl, case in login already added baseUrl.
2832 const redirectUrl = getRedirectUrl ( req . url )
2933 // console.log('---Callback. redirectUrl:' + redirectUrl)
3034 // console.log(' -- req.url:' + req.url + ' #method:' + req.method + ' #response_mode:' + responseMode)
3135
32- const callbackUrl = getCallbackUrl ( op . callbackUrl , redirectUrl , req . headers . host )
36+ const callbackUrl = getCallbackUrl ( '' , redirectUrl , req . headers . host )
3337 const defCallBackUrl = getDefaultBackUrl ( redirectUrl , req . headers . host )
3438
3539 const issueClient = await initClient ( op , req , [ defCallBackUrl , callbackUrl ] )
@@ -39,7 +43,7 @@ export default defineEventHandler(async (event) => {
3943 // Implicit ID Token Flow: access_token
4044 console . log ( '[CALLBACK]: has access_token in params, accessToken:' + params . access_token )
4145 await processUserInfo ( params . access_token , null , event )
42- res . writeHead ( 302 , { Location : redirectUrl || '/' } )
46+ res . writeHead ( 302 , { Location : redirectUrl || baseUrl } )
4347 res . end ( )
4448 } else if ( params . code ) {
4549 // Authorization Code Flow: code -> access_token
@@ -48,7 +52,7 @@ export default defineEventHandler(async (event) => {
4852 if ( tokenSet . access_token ) {
4953 await processUserInfo ( tokenSet . access_token , tokenSet , event )
5054 }
51- res . writeHead ( 302 , { Location : redirectUrl || '/' } )
55+ res . writeHead ( 302 , { Location : redirectUrl || baseUrl } )
5256 res . end ( )
5357 } else {
5458 // Error dealing.
@@ -57,15 +61,15 @@ export default defineEventHandler(async (event) => {
5761 // redirct to auth failed error page.
5862 console . error ( '[CALLBACK]: error callback' )
5963 console . error ( params . error + ', error_description:' + params . error_description )
60- res . writeHead ( 302 , { Location : '/oidc/error' } )
64+ res . writeHead ( 302 , { Location : getCleanUrl ( baseUrl + '/oidc/error' ) } )
6165 res . end ( )
6266 } else if ( responseMode === 'fragment' ) {
6367 console . warn ( '[CALLBACK]: callback redirect' )
64- res . writeHead ( 302 , { Location : '/oidc/cbt?redirect=' + redirectUrl } )
68+ res . writeHead ( 302 , { Location : getCleanUrl ( baseUrl + '/oidc/cbt?redirect=' + redirectUrl ) } )
6569 res . end ( )
6670 } else {
6771 console . error ( '[CALLBACK]: error callback' )
68- res . writeHead ( 302 , { Location : redirectUrl || '/' } )
72+ res . writeHead ( 302 , { Location : redirectUrl || baseUrl } )
6973 res . end ( )
7074 }
7175 }
0 commit comments