Permissions: less magic numbers
This commit is contained in:
parent
2defc309c4
commit
a8f8af92d3
@ -16,15 +16,7 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import {
|
||||
Channel,
|
||||
ChannelPermissionOverwrite,
|
||||
ChannelPermissionOverwriteSchema,
|
||||
ChannelUpdateEvent,
|
||||
emitEvent,
|
||||
Member,
|
||||
Role,
|
||||
} from "@spacebar/util";
|
||||
import { Channel, ChannelPermissionOverwrite, ChannelPermissionOverwriteSchema, ChannelPermissionOverwriteType, ChannelUpdateEvent, emitEvent, Member, Role } from "@spacebar/util";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
|
||||
@ -59,10 +51,10 @@ router.put(
|
||||
channel.guild,
|
||||
);
|
||||
|
||||
if (body.type === 0) {
|
||||
if (body.type === ChannelPermissionOverwriteType.role) {
|
||||
if (!(await Role.count({ where: { id: overwrite_id } })))
|
||||
throw new HTTPError("role not found", 404);
|
||||
} else if (body.type === 1) {
|
||||
} else if (body.type === ChannelPermissionOverwriteType.member) {
|
||||
if (!(await Member.count({ where: { id: overwrite_id } })))
|
||||
throw new HTTPError("user not found", 404);
|
||||
} else throw new HTTPError("type not supported", 501);
|
||||
|
||||
@ -2,24 +2,12 @@
|
||||
// Apache License Version 2.0 Copyright 2015 - 2021 Amish Shah
|
||||
// @fc-license-skip
|
||||
|
||||
import {
|
||||
Channel,
|
||||
ChannelPermissionOverwrite,
|
||||
Guild,
|
||||
Member,
|
||||
Role,
|
||||
} from "../entities";
|
||||
import { BitField } from "./BitField";
|
||||
import { Channel, ChannelPermissionOverwrite, ChannelPermissionOverwriteType, Guild, Member, Role } from "../entities";
|
||||
import { BitField, BitFieldResolvable, BitFlag } from "./BitField";
|
||||
import "missing-native-js-functions";
|
||||
import { BitFieldResolvable, BitFlag } from "./BitField";
|
||||
import { HTTPError } from "lambert-server";
|
||||
|
||||
export type PermissionResolvable =
|
||||
| bigint
|
||||
| number
|
||||
| Permissions
|
||||
| PermissionResolvable[]
|
||||
| PermissionString;
|
||||
export type PermissionResolvable = bigint | number | Permissions | PermissionResolvable[] | PermissionString;
|
||||
|
||||
type PermissionString = keyof typeof Permissions.FLAGS;
|
||||
|
||||
@ -117,9 +105,9 @@ export class Permissions extends BitField {
|
||||
if (!overwrites) return this;
|
||||
if (!this.cache) throw new Error("permission chache not available");
|
||||
overwrites = overwrites.filter((x) => {
|
||||
if (x.type === 0 && this.cache.roles?.some((r) => r.id === x.id))
|
||||
if (x.type === ChannelPermissionOverwriteType.role && this.cache.roles?.some((r) => r.id === x.id))
|
||||
return true;
|
||||
if (x.type === 1 && x.id == this.cache.user_id) return true;
|
||||
if (x.type === ChannelPermissionOverwriteType.member && x.id == this.cache.user_id) return true;
|
||||
return false;
|
||||
});
|
||||
return new Permissions(
|
||||
@ -178,8 +166,8 @@ export class Permissions extends BitField {
|
||||
|
||||
if (channel?.overwrites) {
|
||||
const overwrites = channel.overwrites.filter((x) => {
|
||||
if (x.type === 0 && user.roles.includes(x.id)) return true;
|
||||
if (x.type === 1 && x.id == user.id) return true;
|
||||
if (x.type === ChannelPermissionOverwriteType.role && user.roles.includes(x.id)) return true;
|
||||
if (x.type === ChannelPermissionOverwriteType.member && x.id == user.id) return true;
|
||||
return false;
|
||||
});
|
||||
permission = Permissions.channelPermission(overwrites, permission);
|
||||
|
||||
Reference in New Issue
Block a user