mirror of
https://github.com/nowcommunity/nowdatabase.git
synced 2026-10-12 19:13:52 +03:00
20 lines
528 B
TypeScript
20 lines
528 B
TypeScript
import { Role } from '../../../frontend/src/shared/types'
|
|
import { Middleware } from '../types'
|
|
|
|
export class AccessError extends Error {
|
|
declare status: number
|
|
constructor(message?: string) {
|
|
super()
|
|
this.message = message ?? 'User not authorized for the requested resource or action'
|
|
this.status = 403
|
|
}
|
|
}
|
|
|
|
export const requireOneOf = (roles: Role[]) => {
|
|
const f: Middleware = (req, _res, next) => {
|
|
if (!req.user || !roles.includes(req.user.role)) throw new AccessError()
|
|
next()
|
|
}
|
|
return f
|
|
}
|