Implemented permissions and user administration #2

Merged
Patrick merged 17 commits from dev into main 2025-08-25 17:33:06 +02:00
1 changed files with 7 additions and 1 deletions
Showing only changes of commit 67255f3773 - Show all commits

View File

@ -67,8 +67,13 @@ function toPermissionObj(config: PermissionDef): Record<PermissionGroups, Record
for (const [name, definition] of Object.entries(config)) {
obj[name] = {}
obj[name]["ALL"] = 0;
for (const [permission, value] of Object.entries(definition.permissions)) {
if (permission == "ALL") {
throw new Error(`permission must not be called ALL in group ${name}`)
}
obj[name][permission] = 1 << (curr_pos + value)
obj[name]["ALL"] |= obj[name][permission]
}
for (const [meta, permissions] of Object.entries(definition?.meta_permissions ?? {})) {
let mask = 0;
@ -90,5 +95,6 @@ __validate_config(config)
export default {
...toPermissionObj(config),
has: (user_permissions: number, permission: number): boolean => (user_permissions & permission) > 0
has: (user_permissions: number, permissions: number): boolean => (user_permissions & permissions) == permissions,
any: (user_permissions: number, permissions: number): boolean => (user_permissions & permissions) > 0,
}