fix: auth util fixes

This commit is contained in:
TheClashFruit 2024-09-07 16:38:00 +02:00
parent 89a31da575
commit a9f943b7e4
Signed by: TheClashFruit
GPG key ID: 09BB24C34C2F3204
3 changed files with 27 additions and 3 deletions

View file

@ -3,7 +3,8 @@
"rules": {
"indent": [
"error",
2
2,
{ "SwitchCase": 1 }
],
"quotes": [
"error",

View file

@ -1,5 +1,5 @@
import Database from '@/lib/Database';
import { hasPermission, Permission } from './permissions';
import { getPermission, hasPermission, Permission } from './permissions';
import { User } from '@/interfaces';
import type { NextApiRequest } from 'next';
@ -27,7 +27,7 @@ export async function isUserAdmin(sid?: string): Promise<doas> {
return {
user,
hasPermission: hasPermission(user.permissions, Permission.Admin)
hasPermission: hasPermission(getPermission(user.permissions), Permission.Admin)
};
}

View file

@ -10,6 +10,29 @@ export enum PermissionNamed {
ServerPlayer = 'server_player'
}
export function getPermission(permissions: PermissionNamed[]): Permission {
let result = 0;
for (const permission of permissions) {
switch (permission) {
case PermissionNamed.SuperAdmin:
result |= Permission.SuperAdmin;
break;
case PermissionNamed.Admin:
result |= Permission.Admin;
break;
case PermissionNamed.ServerPlayer:
result |= Permission.ServerPlayer;
break;
}
}
return result;
}
export function hasPermission(permissions: number, permission: Permission): boolean {
return (permissions & permission) === permission;
}