36 lines
1.0 KiB
TypeScript
36 lines
1.0 KiB
TypeScript
// shared/lib/auth/handle-logout.ts — 登出工厂(步骤 1a 新增)
|
|
// 清除 tlyq_session cookie → 返回 200 JSON
|
|
import { NextResponse, type NextRequest } from 'next/server'
|
|
|
|
interface HandleOidcLogoutConfig {
|
|
cookieDomain: string
|
|
}
|
|
|
|
/** 登出:清除 tlyq_session 和 OIDC 临时 cookie → 返回 200 JSON */
|
|
export function handleOidcLogout(_req: NextRequest, config: HandleOidcLogoutConfig): NextResponse {
|
|
const response = NextResponse.json({ success: true })
|
|
|
|
// 清除 tlyq_session
|
|
response.cookies.set('tlyq_session', '', {
|
|
httpOnly: true,
|
|
secure: process.env.NODE_ENV === 'production',
|
|
sameSite: 'lax' as const,
|
|
domain: config.cookieDomain,
|
|
path: '/',
|
|
maxAge: 0,
|
|
})
|
|
|
|
// 清除 OIDC 临时 cookie
|
|
for (const name of ['oidc_code_verifier', 'oidc_state', 'oidc_nonce']) {
|
|
response.cookies.set(name, '', {
|
|
httpOnly: true,
|
|
secure: process.env.NODE_ENV === 'production',
|
|
sameSite: 'lax' as const,
|
|
path: '/',
|
|
maxAge: 0,
|
|
})
|
|
}
|
|
|
|
return response
|
|
}
|