Throw error on bad permission check in Wed UI

Throw an error if an attempt is made to check for a permission that does
not exist in the Web UI to prevent future bad permission checks going
unnoticed.
This commit is contained in:
Hornwitser committed 2024-02-06 22:43:04 +01:00
1 parent d3f8c993b1
commit 44b0a8ff83
1 file changed
+13
+13
View File
@@ -22,6 +22,12 @@ export function useAccount(): UserAccount {
};
}, [control]);
function checkPermissionExists(permission: string) {
if (!lib.permissions.has(permission)) {
throw new Error(`permission ${permission} does not exist`);
}
}
function hasPermission(permission: string): boolean {
for (let role of roles) {
if (role.permissions.includes("core.admin") || role.permissions.includes(permission)) {
@@ -38,12 +44,16 @@ export function useAccount(): UserAccount {
if (!roles) {
return null;
}
checkPermissionExists(permission);
return hasPermission(permission);
},
hasAnyPermission(...permissions: string[]): boolean | null {
if (!roles) {
return null;
}
for (let permission of permissions) {
checkPermissionExists(permission);
}
for (let permission of permissions) {
if (hasPermission(permission)) {
return true;
@@ -55,6 +65,9 @@ export function useAccount(): UserAccount {
if (!roles) {
return null;
}
for (let permission of permissions) {
checkPermissionExists(permission);
}
for (let permission of permissions) {
if (!hasPermission(permission)) {
return false;