fix: auth util fixes
This commit is contained in:
parent
89a31da575
commit
a9f943b7e4
|
@ -3,7 +3,8 @@
|
|||
"rules": {
|
||||
"indent": [
|
||||
"error",
|
||||
2
|
||||
2,
|
||||
{ "SwitchCase": 1 }
|
||||
],
|
||||
"quotes": [
|
||||
"error",
|
||||
|
|
|
@ -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)
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue