Implemented permissions and user administration #2
|
|
@ -67,8 +67,13 @@ function toPermissionObj(config: PermissionDef): Record<PermissionGroups, Record
|
||||||
|
|
||||||
for (const [name, definition] of Object.entries(config)) {
|
for (const [name, definition] of Object.entries(config)) {
|
||||||
obj[name] = {}
|
obj[name] = {}
|
||||||
|
obj[name]["ALL"] = 0;
|
||||||
for (const [permission, value] of Object.entries(definition.permissions)) {
|
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][permission] = 1 << (curr_pos + value)
|
||||||
|
obj[name]["ALL"] |= obj[name][permission]
|
||||||
}
|
}
|
||||||
for (const [meta, permissions] of Object.entries(definition?.meta_permissions ?? {})) {
|
for (const [meta, permissions] of Object.entries(definition?.meta_permissions ?? {})) {
|
||||||
let mask = 0;
|
let mask = 0;
|
||||||
|
|
@ -90,5 +95,6 @@ __validate_config(config)
|
||||||
export default {
|
export default {
|
||||||
...toPermissionObj(config),
|
...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,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue