diff --git a/src/lib/permissions.config.json b/src/lib/permissions.config.json index f65484e..0844928 100644 --- a/src/lib/permissions.config.json +++ b/src/lib/permissions.config.json @@ -18,7 +18,7 @@ "position": 3, "name": "Bearbeiten" }, - "EDIT_PASSWORD": { + "ADMIN": { "position": 4, "name": "Administration" } diff --git a/src/lib/permissions.ts b/src/lib/permissions.ts index 85308a0..19a0a30 100644 --- a/src/lib/permissions.ts +++ b/src/lib/permissions.ts @@ -20,6 +20,12 @@ interface GroupDef { type PermissionDef = Record +interface PermissionDescription { + key: string + value: number + name: string +} + const _display_names = new Map() @@ -138,7 +144,7 @@ export default { has: (user_permissions: number, permissions: number): boolean => (user_permissions & permissions) == permissions, any: (user_permissions: number, permissions: number): boolean => (user_permissions & permissions) > 0, - iterate: (permission_group: Record): Array<{key: string, value: number, name: string}> => Object.entries(permission_group).map(([key, value]) => ({ key: key, value: value, name: _to_display_name(value)})), + iterate: (permission_group: Record): Array => Object.entries(permission_group).map(([key, value]) => ({ key: key, value: value, name: _to_display_name(value)})), is_meta: (permission: number) => permission != 0 && ((permission & (permission - 1)) != 0), deconstruct: _deconstruct, diff --git a/src/routes/user/+page.server.ts b/src/routes/user/+page.server.ts index fec78ad..6cbcc73 100644 --- a/src/routes/user/+page.server.ts +++ b/src/routes/user/+page.server.ts @@ -37,7 +37,7 @@ export const load: PageServerLoad = ({ locals, url }) => { return fail(404, { message: `User ${user_id} not found` }) } - if (!Permissions.has(locals.user.permissions, Permissions.USERADMIN.EDIT_PASSWORD)) { + if (!Permissions.has(locals.user.permissions, Permissions.USERADMIN.ADMIN)) { user.permissions = 0 } } @@ -75,7 +75,7 @@ export const actions = { if (locals.user.id != id && (!Permissions.has(locals.user.permissions, Permissions.USERADMIN.EDIT) - || ((password1 != null || password2 != null) && !Permissions.has(locals.user.permissions, Permissions.USERADMIN.EDIT_PASSWORD)))) { + || ((password1 != null || password2 != null) && !Permissions.has(locals.user.permissions, Permissions.USERADMIN.ADMIN)))) { return fail(403, { message: "Unauthorized action" }) } diff --git a/src/routes/user/+page.svelte b/src/routes/user/+page.svelte index 0bf70ce..62e5aa2 100644 --- a/src/routes/user/+page.svelte +++ b/src/routes/user/+page.svelte @@ -70,7 +70,7 @@ - {#if data.user?.id == data.loggedInAs.id || Permissions.has(data.loggedInAs.permissions ?? 0, Permissions.USERADMIN.EDIT_PASSWORD)} + {#if data.user?.id == data.loggedInAs.id || Permissions.has(data.loggedInAs.permissions ?? 0, Permissions.USERADMIN.ADMIN)} {@const disabled = data.user?.id == data.loggedInAs.id}