enhance: permission handling
This commit is contained in:
parent
35fd8a8e82
commit
4ee16c624a
2 changed files with 22 additions and 7 deletions
|
@ -33,13 +33,21 @@ export const useAbilityStore = defineStore("ability", {
|
||||||
if (type == "admin") return permissions?.admin ?? permissions?.adminByOwner ?? false;
|
if (type == "admin") return permissions?.admin ?? permissions?.adminByOwner ?? false;
|
||||||
if (permissions?.admin || permissions?.adminByOwner) return true;
|
if (permissions?.admin || permissions?.adminByOwner) return true;
|
||||||
if (
|
if (
|
||||||
permissions[section]?.all == "*" ||
|
(permissions[section]?.all == "*" || permissions[section]?.all?.includes(type)) &&
|
||||||
permissions[section]?.all?.includes(type) ||
|
|
||||||
permissions[section] != undefined
|
permissions[section] != undefined
|
||||||
)
|
)
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
|
canAccessSection:
|
||||||
|
(state) =>
|
||||||
|
(section: PermissionSection): boolean => {
|
||||||
|
const permissions = state.permissions;
|
||||||
|
if (state.isOwner) return true;
|
||||||
|
if (permissions?.admin || permissions?.adminByOwner) return true;
|
||||||
|
if (permissions[section] != undefined) return true;
|
||||||
|
return false;
|
||||||
|
},
|
||||||
isAdmin: (state) => (): boolean => {
|
isAdmin: (state) => (): boolean => {
|
||||||
const permissions = state.permissions;
|
const permissions = state.permissions;
|
||||||
if (state.isOwner) return true;
|
if (state.isOwner) return true;
|
||||||
|
@ -72,13 +80,20 @@ export const useAbilityStore = defineStore("ability", {
|
||||||
if (type == "admin") return permissions?.admin ?? permissions?.adminByOwner ?? false;
|
if (type == "admin") return permissions?.admin ?? permissions?.adminByOwner ?? false;
|
||||||
if (permissions?.admin || permissions?.adminByOwner) return true;
|
if (permissions?.admin || permissions?.adminByOwner) return true;
|
||||||
if (
|
if (
|
||||||
permissions[section]?.all == "*" ||
|
(permissions[section]?.all == "*" || permissions[section]?.all?.includes(type)) &&
|
||||||
permissions[section]?.all?.includes(type) ||
|
|
||||||
permissions[section] != undefined
|
permissions[section] != undefined
|
||||||
)
|
)
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
|
_canAccessSection:
|
||||||
|
() =>
|
||||||
|
(permissions: PermissionObject, section: PermissionSection): boolean => {
|
||||||
|
// ignores ownership
|
||||||
|
if (permissions?.admin || permissions?.adminByOwner) return true;
|
||||||
|
if (permissions[section] != undefined) return true;
|
||||||
|
return false;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
setAbility(permissions: PermissionObject, isOwner: boolean) {
|
setAbility(permissions: PermissionObject, isOwner: boolean) {
|
||||||
|
|
|
@ -48,7 +48,7 @@ export const useNavigationStore = defineStore("navigation", {
|
||||||
updateTopLevel() {
|
updateTopLevel() {
|
||||||
const abilityStore = useAbilityStore();
|
const abilityStore = useAbilityStore();
|
||||||
this.topLevel = [
|
this.topLevel = [
|
||||||
...(abilityStore.canSection("read", "club")
|
...(abilityStore.canAccessSection("club")
|
||||||
? [
|
? [
|
||||||
{
|
{
|
||||||
key: "club",
|
key: "club",
|
||||||
|
@ -57,7 +57,7 @@ export const useNavigationStore = defineStore("navigation", {
|
||||||
} as topLevelNavigationModel,
|
} as topLevelNavigationModel,
|
||||||
]
|
]
|
||||||
: []),
|
: []),
|
||||||
...(abilityStore.canSection("read", "configuration")
|
...(abilityStore.canAccessSection("configuration")
|
||||||
? [
|
? [
|
||||||
{
|
{
|
||||||
key: "configuration",
|
key: "configuration",
|
||||||
|
@ -66,7 +66,7 @@ export const useNavigationStore = defineStore("navigation", {
|
||||||
} as topLevelNavigationModel,
|
} as topLevelNavigationModel,
|
||||||
]
|
]
|
||||||
: []),
|
: []),
|
||||||
...(abilityStore.canSection("read", "management")
|
...(abilityStore.canAccessSection("management")
|
||||||
? [
|
? [
|
||||||
{
|
{
|
||||||
key: "management",
|
key: "management",
|
||||||
|
|
Loading…
Add table
Reference in a new issue