51 lines
1013 B
JavaScript
51 lines
1013 B
JavaScript
import { NextResponse } from 'next/server'
|
|
import { setJson } from './set-json'
|
|
|
|
function errorHandler(err) {
|
|
if (typeof err === 'string') {
|
|
// custom application error
|
|
const is404 = err.toLowerCase().endsWith('not found')
|
|
const status = is404 ? 404 : 400
|
|
return NextResponse.json(
|
|
setJson({
|
|
message: err,
|
|
code: status,
|
|
}),
|
|
{ status }
|
|
)
|
|
}
|
|
|
|
if (err.name === 'JsonWebTokenError') {
|
|
// jwt error - delete cookie to auto logout
|
|
return NextResponse.json(
|
|
setJson({
|
|
message: 'Unauthorized',
|
|
code: '401',
|
|
}),
|
|
{ status: 401 }
|
|
)
|
|
}
|
|
|
|
if (err.name === 'UserExistsError') {
|
|
return NextResponse.json(
|
|
setJson({
|
|
message: err.message,
|
|
code: '422',
|
|
}),
|
|
{ status: 422 }
|
|
)
|
|
}
|
|
|
|
// default to 500 server error
|
|
console.error(err)
|
|
return NextResponse.json(
|
|
setJson({
|
|
message: err.message,
|
|
code: '500',
|
|
}),
|
|
{ status: 500 }
|
|
)
|
|
}
|
|
|
|
export { errorHandler }
|