How can I set dynamic statuscode for each error and what error code should I use when a user has no access ?
here is my code:
import * as Sentry from '@sentry/node';
import { Request, Response } from 'express';
import { INTERNAL_ERROR } from '../../utils/constants.js';
import { createAdminAccountDB } from '../../db/auth/createAdminAccount.db.js';
export const createAdminAccount = async (req: Request, res: Response) => {
try {
if(!req.appData.isAdmin) {
throw new Error('No access');
}
if(!req.userData.roles) {
throw new Error('No access.');
}
if(!req.userData.roles.includes('CREATE_ADMIN_USER')) {
throw new Error('No Access. Role not valid.');
}
const result = await createAdminAccountDB(req.body);
if(!result) {
throw new Error(result ?? 'Database error.');
} else {
return res.status(200).json(result);
}
} catch(e) {
Sentry.captureException(e);
console.log(e);
if(e instanceof Error) {
return res.status(500).json({
message: e.message,
success: false
});
} else if(typeof e === 'string') {
return res.status(500).json({
message: e,
success: false
});
} else {
return res.status(500).json({
message: INTERNAL_ERROR,
success: false
});
}
}
};
At my catch error I set the statuscode to 500 but how can I change the statuscode when I throw a access error ?