import { GraphQLError } from 'graphql'; export default class AuthorizationError extends GraphQLError { public readonly code: number = 403; constructor(userRoles: string[], operationRoles: string[]) { super('Authorization error.'); const opRolesStr = operationRoles.reduce((opStr: string, role: string) => { return opStr + role + ', '; }, ''); const userRolesStr = userRoles.reduce((userStr: string, role: string) => { return userStr + role + ', '; }, ''); this.message += ` The operation is not allowed for roles ${userRolesStr}. Supported roles: ${opRolesStr}`; } }