@@ -2,13 +2,16 @@ import * as http from 'http'
2
2
import { defineEventHandler , getCookie , setCookie , deleteCookie } from 'h3'
3
3
import { initClient } from '../../../utils/issueclient'
4
4
import { 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'
6
6
import { useRuntimeConfig } from '#imports'
7
7
8
8
export default defineEventHandler ( async ( event ) => {
9
+ console . log ( '---------oidc nitro --------------' )
9
10
const req = event . node . req
10
11
const res = event . node . res
11
12
console . log ( '[CALLBACK]: oidc/callback calling, method:' + req . method )
13
+ const { app } = useRuntimeConfig ( )
14
+ const baseUrl = app . baseURL
12
15
13
16
let request = req
14
17
if ( req . method === 'POST' ) {
@@ -25,11 +28,12 @@ export default defineEventHandler(async (event) => {
25
28
const responseMode = getResponseMode ( config )
26
29
const sessionid = getCookie ( event , config . secret )
27
30
deleteCookie ( event , config . secret )
31
+ // Note: here not need add baseUrl, case in login already added baseUrl.
28
32
const redirectUrl = getRedirectUrl ( req . url )
29
33
// console.log('---Callback. redirectUrl:' + redirectUrl)
30
34
// console.log(' -- req.url:' + req.url + ' #method:' + req.method + ' #response_mode:' + responseMode)
31
35
32
- const callbackUrl = getCallbackUrl ( op . callbackUrl , redirectUrl , req . headers . host )
36
+ const callbackUrl = getCallbackUrl ( '' , redirectUrl , req . headers . host )
33
37
const defCallBackUrl = getDefaultBackUrl ( redirectUrl , req . headers . host )
34
38
35
39
const issueClient = await initClient ( op , req , [ defCallBackUrl , callbackUrl ] )
@@ -39,7 +43,7 @@ export default defineEventHandler(async (event) => {
39
43
// Implicit ID Token Flow: access_token
40
44
console . log ( '[CALLBACK]: has access_token in params, accessToken:' + params . access_token )
41
45
await processUserInfo ( params . access_token , null , event )
42
- res . writeHead ( 302 , { Location : redirectUrl || '/' } )
46
+ res . writeHead ( 302 , { Location : redirectUrl || baseUrl } )
43
47
res . end ( )
44
48
} else if ( params . code ) {
45
49
// Authorization Code Flow: code -> access_token
@@ -48,7 +52,7 @@ export default defineEventHandler(async (event) => {
48
52
if ( tokenSet . access_token ) {
49
53
await processUserInfo ( tokenSet . access_token , tokenSet , event )
50
54
}
51
- res . writeHead ( 302 , { Location : redirectUrl || '/' } )
55
+ res . writeHead ( 302 , { Location : redirectUrl || baseUrl } )
52
56
res . end ( )
53
57
} else {
54
58
// Error dealing.
@@ -57,15 +61,15 @@ export default defineEventHandler(async (event) => {
57
61
// redirct to auth failed error page.
58
62
console . error ( '[CALLBACK]: error callback' )
59
63
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' ) } )
61
65
res . end ( )
62
66
} else if ( responseMode === 'fragment' ) {
63
67
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 ) } )
65
69
res . end ( )
66
70
} else {
67
71
console . error ( '[CALLBACK]: error callback' )
68
- res . writeHead ( 302 , { Location : redirectUrl || '/' } )
72
+ res . writeHead ( 302 , { Location : redirectUrl || baseUrl } )
69
73
res . end ( )
70
74
}
71
75
}
0 commit comments