port-nimara-client-portal/server/api/auth/logout.ts

42 lines
1.2 KiB
TypeScript

export default defineEventHandler(async (event) => {
console.log('[LOGOUT] Processing logout request')
try {
// Check for OIDC session
const oidcSession = getCookie(event, 'nuxt-oidc-auth')
// Clear OIDC session cookie
if (oidcSession) {
deleteCookie(event, 'nuxt-oidc-auth', {
domain: '.portnimara.dev',
path: '/'
})
console.log('[LOGOUT] OIDC session cleared')
}
// Always redirect to Keycloak logout to ensure complete logout
const logoutUrl = 'https://auth.portnimara.dev/realms/client-portal/protocol/openid-connect/logout?' +
new URLSearchParams({
redirect_uri: 'https://client.portnimara.dev/login'
}).toString()
console.log('[LOGOUT] Redirecting to Keycloak logout:', logoutUrl)
await sendRedirect(event, logoutUrl)
} catch (error) {
console.error('[LOGOUT] Logout error:', error)
// Fallback: clear cookies and redirect to login
try {
deleteCookie(event, 'nuxt-oidc-auth', {
domain: '.portnimara.dev',
path: '/'
})
} catch (cookieError) {
console.error('[LOGOUT] Cookie cleanup error:', cookieError)
}
await sendRedirect(event, '/login')
}
})