summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-04-23 00:10:10 +0200
committerFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-04-23 00:10:10 +0200
commit6f5fba5c381aaca94f6e6518a9d1a9f1d7923032 (patch)
treeee89907d4c0941f7bfbabda3a6d0fa5b47715790 /src
parent:art: rename to -> @fosscord/server-util (diff)
downloadserver-6f5fba5c381aaca94f6e6518a9d1a9f1d7923032.tar.xz
:sparkles: throw missing permission
Diffstat (limited to 'src')
-rw-r--r--src/util/Permissions.ts15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/util/Permissions.ts b/src/util/Permissions.ts

index c7a41594..2f43f7e1 100644 --- a/src/util/Permissions.ts +++ b/src/util/Permissions.ts
@@ -7,6 +7,14 @@ import { Role, RoleModel } from "../models/Role"; import { BitField } from "./BitField"; import { GuildDocument, GuildModel } from "../models/Guild"; +var HTTPError: typeof Error; + +try { + HTTPError = require("lambert-server").HTTPError; +} catch (e) { + HTTPError = Error; +} + export type PermissionResolvable = bigint | number | Permissions | PermissionResolvable[] | PermissionString; type PermissionString = @@ -101,10 +109,9 @@ export class Permissions extends BitField { * Checks whether the bitfield has a permission, or multiple permissions, but throws an Error if user fails to match auth criteria. */ hasThrow(permission: PermissionResolvable, checkAdmin = true) { - if ((checkAdmin && super.has(Permissions.FLAGS.ADMINISTRATOR)) || super.has(permission)) { - return true; - } - throw new Error(`User doesn't fulfill the following permission criteria: ${permission}`); + if (this.has(permission)) return true; + // @ts-ignore + throw new HTTPError(`You are missing the following permissions ${permission}`, 403); } static channelPermission(overwrites: ChannelPermissionOverwrite[], init?: bigint) {