first pass of RBAC systems

This commit is contained in:
2025-10-19 23:57:14 -04:00
parent 06764ebeb4
commit 3cc5d0a981
3 changed files with 25 additions and 25 deletions

View File

@@ -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 }
})