You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.0 KiB
45 lines
1.0 KiB
// server/api/auth/logout.post.ts
|
|
|
|
/**
|
|
* POST /api/auth/logout
|
|
*
|
|
* End user session and perform Single Sign-Out at Cidaas
|
|
*
|
|
* Response:
|
|
* {
|
|
* "success": true
|
|
* }
|
|
*/
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
try {
|
|
// 1. Get session to retrieve access token
|
|
const session = await getUserSession(event)
|
|
|
|
// 2. If access token exists, logout from Cidaas (Single Sign-Out)
|
|
if (session.accessToken) {
|
|
try {
|
|
await logoutFromCidaas(session.accessToken)
|
|
} catch (error) {
|
|
// Log error but continue with local logout
|
|
console.error('Cidaas logout failed, continuing with local logout:', error)
|
|
}
|
|
}
|
|
|
|
// 3. Clear local session (nuxt-auth-utils)
|
|
await clearUserSession(event)
|
|
|
|
return {
|
|
success: true,
|
|
}
|
|
} catch (error) {
|
|
console.error('Logout error:', error)
|
|
|
|
// Clear session even if Cidaas logout fails
|
|
await clearUserSession(event)
|
|
|
|
return {
|
|
success: true, // Always return success for logout
|
|
}
|
|
}
|
|
})
|
|
|