summary refs log tree commit diff
path: root/src/util
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/util
parent:art: rename to -> @fosscord/server-util (diff)
downloadserver-6f5fba5c381aaca94f6e6518a9d1a9f1d7923032.tar.xz
:sparkles: throw missing permission
Diffstat (limited to 'src/util')
-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) {