mirror of
https://github.com/vercel/commerce.git
synced 2025-05-18 23:46:58 +00:00
36 lines
978 B
TypeScript
36 lines
978 B
TypeScript
import type { LogoutSchema } from '../../types/logout'
|
|
import { CommerceAPIError } from '../utils/errors'
|
|
import isAllowedOperation from '../utils/is-allowed-operation'
|
|
import type { GetAPISchema } from '..'
|
|
|
|
const logoutEndpoint: GetAPISchema<any, LogoutSchema>['endpoint']['handler'] =
|
|
async (ctx) => {
|
|
const { req, res, handlers } = ctx
|
|
|
|
if (
|
|
!isAllowedOperation(req, res, {
|
|
GET: handlers['logout'],
|
|
})
|
|
) {
|
|
return
|
|
}
|
|
|
|
try {
|
|
const redirectTo = req.query.redirect_to
|
|
const body = typeof redirectTo === 'string' ? { redirectTo } : {}
|
|
|
|
return await handlers['logout']({ ...ctx, body })
|
|
} catch (error) {
|
|
console.error(error)
|
|
|
|
const message =
|
|
error instanceof CommerceAPIError
|
|
? 'An unexpected error ocurred with the Commerce API'
|
|
: 'An unexpected error ocurred'
|
|
|
|
res.status(500).json({ data: null, errors: [{ message }] })
|
|
}
|
|
}
|
|
|
|
export default logoutEndpoint
|