diff options
author | Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> | 2021-03-04 21:59:49 +0100 |
---|---|---|
committer | Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> | 2021-03-04 21:59:49 +0100 |
commit | 514afaca697ae5f9a02e91342c0434fe9eeffe74 (patch) | |
tree | d0b4ac2751d0903c097aa0374820dd17222ca9d2 /src/util | |
parent | :sparkles: AuditLog (diff) | |
download | server-514afaca697ae5f9a02e91342c0434fe9eeffe74.tar.xz |
:sparkles: AuditLog
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/BitField.ts | 2 | ||||
-rw-r--r-- | src/util/MongoBigInt.ts | 2 | ||||
-rw-r--r-- | src/util/Permissions.ts | 6 |
3 files changed, 7 insertions, 3 deletions
diff --git a/src/util/BitField.ts b/src/util/BitField.ts index aba98d75..5cccd352 100644 --- a/src/util/BitField.ts +++ b/src/util/BitField.ts @@ -137,7 +137,7 @@ export class BitField { const resolve = this.constructor?.resolve || this.resolve; return bit.map((p) => resolve(p)).reduce((prev, p) => BigInt(prev) | BigInt(p), 0n); } - if (typeof bit === "string" && typeof FLAGS[bit] !== "undefined") return this.FLAGS[bit]; + if (typeof bit === "string" && typeof FLAGS[bit] !== "undefined") return FLAGS[bit]; throw new RangeError("BITFIELD_INVALID: " + bit); } } diff --git a/src/util/MongoBigInt.ts b/src/util/MongoBigInt.ts index 28818212..c4e5f623 100644 --- a/src/util/MongoBigInt.ts +++ b/src/util/MongoBigInt.ts @@ -33,7 +33,7 @@ class LongSchema extends mongoose.SchemaType { cast(val: any, scope?: any, init?: any, type?: string) { if (null === val) return val; if ("" === val) return null; - if (typeof val === "bigint" && type === "query") { + if (typeof val === "bigint") { return mongoose.mongo.Long.fromString(val.toString()); } diff --git a/src/util/Permissions.ts b/src/util/Permissions.ts index d7233536..ae21e138 100644 --- a/src/util/Permissions.ts +++ b/src/util/Permissions.ts @@ -5,7 +5,7 @@ import { ChannelDocument, ChannelModel } from "../models/Channel"; import { ChannelPermissionOverwrite } from "../models/Channel"; import { Role, RoleModel } from "../models/Role"; import { BitField } from "./BitField"; -import { GuildDocument } from "../models/Guild"; +import { GuildDocument, GuildModel } from "../models/Guild"; export type PermissionResolvable = bigint | number | Permissions | PermissionResolvable[] | PermissionString; @@ -151,6 +151,10 @@ export async function getPermission( ) { var { channel, member } = cache || {}; + const guild = await GuildModel.findOne({ id: guild_id }, { owner_id: true }).exec(); + if (!guild) throw new Error("Guild not found"); + if (guild.owner_id === user_id) return new Permissions(Permissions.FLAGS.ADMINISTRATOR); + member = await MemberModel.findOne({ guild_id, id: user_id }, "roles").exec(); if (!member) throw new Error("Member not found"); |