Permissions: less magic numbers

This commit is contained in:
Rory& 2025-09-11 13:03:54 +02:00
parent 2defc309c4
commit a8f8af92d3
2 changed files with 10 additions and 30 deletions

View File

@ -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);

View File

@ -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);