🐛 fix (rbac): use userStore to determine user roles

This commit is contained in:
Abizrh
2025-08-13 16:37:32 +07:00
parent f89cd09646
commit 67ccb21b49
4 changed files with 11 additions and 10 deletions
+6 -5
View File
@@ -5,21 +5,22 @@ import type { Permission, RoleAccess } from '~/models/role'
*/
export function useRBAC() {
// NOTE: this roles was dummy for testing only, it should taken from the user store
// const authStore = useAuthStore()
const authStore = useUserStore()
const checkRole = (roleAccess: RoleAccess, _userRoles?: string[]): boolean => {
const roles = ['admisi']
const roles = authStore.userRole
return roles.some((role: string) => role in roleAccess)
}
const checkPermission = (roleAccess: RoleAccess, permission: Permission, _userRoles?: string[]): boolean => {
const roles = ['admisi']
const roles = authStore.userRole
// const roles = ['admisi']
return roles.some((role: string) => roleAccess[role]?.includes(permission))
}
const getUserPermissions = (roleAccess: RoleAccess, _userRoles?: string[]): Permission[] => {
// const roles = userRoles || authStore.roles
const roles = ['admisi']
const roles = authStore.userRole
// const roles = ['admisi']
const permissions = new Set<Permission>()
roles.forEach((role) => {
-1
View File
@@ -2,7 +2,6 @@ export default defineNuxtRouteMiddleware((to) => {
if (to.meta.public) return
const { $pinia } = useNuxtApp()
if (import.meta.client) {
const userStore = useUserStore($pinia)
+2 -2
View File
@@ -19,8 +19,8 @@ export default defineNuxtRouteMiddleware((to) => {
const requiredRoles = to.meta.roles as string[]
if (requiredRoles && requiredRoles.length > 0) {
// FIXME: change this dummy roles, when api is ready
// const userRoles = authStore.roles
const userRoles = ['admisi']
const userRoles = authStore.userRole
// const userRoles = ['admisi']
const hasRequiredRole = requiredRoles.some((role) => userRoles.includes(role))
if (!hasRequiredRole) {
+3 -2
View File
@@ -2,9 +2,10 @@ export const useUserStore = defineStore(
'user',
() => {
const user = ref<any | null>(null)
// const token = useCookie('authentication')
const isAuthenticated = computed(() => !!user.value)
const userRole = computed(() => user.value?.user_position_code || '')
// const userRole = computed(() => user.value?.user_position_code || '')
const login = async (userData: any) => {
user.value = userData
@@ -17,7 +18,7 @@ export const useUserStore = defineStore(
return {
user,
isAuthenticated,
userRole,
userRole: ['admisi'],
login,
logout,
}