From 67ccb21b494749ebf4ac9bd69abacd1b5d4e910c Mon Sep 17 00:00:00 2001 From: Abizrh Date: Wed, 13 Aug 2025 16:37:32 +0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix=20(rbac):=20use=20userStore?= =?UTF-8?q?=20to=20determine=20user=20roles?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/composables/useRBAC.ts | 11 ++++++----- app/middleware/auth.global.ts | 1 - app/middleware/rbac.ts | 4 ++-- app/stores/user.ts | 5 +++-- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/app/composables/useRBAC.ts b/app/composables/useRBAC.ts index 6228f37f..543c3b90 100644 --- a/app/composables/useRBAC.ts +++ b/app/composables/useRBAC.ts @@ -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() roles.forEach((role) => { diff --git a/app/middleware/auth.global.ts b/app/middleware/auth.global.ts index e2b76d91..9d4fb60b 100644 --- a/app/middleware/auth.global.ts +++ b/app/middleware/auth.global.ts @@ -2,7 +2,6 @@ export default defineNuxtRouteMiddleware((to) => { if (to.meta.public) return const { $pinia } = useNuxtApp() - if (import.meta.client) { const userStore = useUserStore($pinia) diff --git a/app/middleware/rbac.ts b/app/middleware/rbac.ts index 8528c2ca..1f7b1526 100644 --- a/app/middleware/rbac.ts +++ b/app/middleware/rbac.ts @@ -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) { diff --git a/app/stores/user.ts b/app/stores/user.ts index 84ebc90a..8c4a618f 100644 --- a/app/stores/user.ts +++ b/app/stores/user.ts @@ -2,9 +2,10 @@ export const useUserStore = defineStore( 'user', () => { const user = ref(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, }