first pass of RBAC systems
This commit is contained in:
@@ -3,9 +3,9 @@ import { defineStore } from 'pinia'
|
||||
|
||||
export const useUserStore = defineStore('user', () => {
|
||||
const user = ref(null)
|
||||
const roles = computed(() => { user.value.roles })
|
||||
const roles = computed(() => new Set(user.value?.roleData?.map(r => r.name) ?? []));
|
||||
const loaded = ref(false);
|
||||
|
||||
const state = computed(() => user.value.state);
|
||||
const isLoggedIn = computed(() => user.value !== null)
|
||||
|
||||
async function loadUser() {
|
||||
@@ -23,5 +23,15 @@ export const useUserStore = defineStore('user', () => {
|
||||
loaded.value = true;
|
||||
}
|
||||
|
||||
return { user, isLoggedIn, roles, loadUser, loaded }
|
||||
|
||||
function hasRole(role: string): boolean {
|
||||
return roles.value.has(role)
|
||||
}
|
||||
|
||||
|
||||
function hasAnyRole(requiredRoles: string[]): boolean {
|
||||
return requiredRoles.some(r => roles.value.has(r))
|
||||
}
|
||||
|
||||
return { user, isLoggedIn, roles, loadUser, loaded, hasAnyRole, hasRole, state }
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user