🐛 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() { export function useRBAC() {
// NOTE: this roles was dummy for testing only, it should taken from the user store // 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 checkRole = (roleAccess: RoleAccess, _userRoles?: string[]): boolean => {
const roles = ['admisi'] const roles = authStore.userRole
return roles.some((role: string) => role in roleAccess) return roles.some((role: string) => role in roleAccess)
} }
const checkPermission = (roleAccess: RoleAccess, permission: Permission, _userRoles?: string[]): boolean => { 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)) return roles.some((role: string) => roleAccess[role]?.includes(permission))
} }
const getUserPermissions = (roleAccess: RoleAccess, _userRoles?: string[]): Permission[] => { const getUserPermissions = (roleAccess: RoleAccess, _userRoles?: string[]): Permission[] => {
// const roles = userRoles || authStore.roles const roles = authStore.userRole
const roles = ['admisi'] // const roles = ['admisi']
const permissions = new Set<Permission>() const permissions = new Set<Permission>()
roles.forEach((role) => { roles.forEach((role) => {
-1
View File
@@ -2,7 +2,6 @@ export default defineNuxtRouteMiddleware((to) => {
if (to.meta.public) return if (to.meta.public) return
const { $pinia } = useNuxtApp() const { $pinia } = useNuxtApp()
if (import.meta.client) { if (import.meta.client) {
const userStore = useUserStore($pinia) const userStore = useUserStore($pinia)
+2 -2
View File
@@ -19,8 +19,8 @@ export default defineNuxtRouteMiddleware((to) => {
const requiredRoles = to.meta.roles as string[] const requiredRoles = to.meta.roles as string[]
if (requiredRoles && requiredRoles.length > 0) { if (requiredRoles && requiredRoles.length > 0) {
// FIXME: change this dummy roles, when api is ready // FIXME: change this dummy roles, when api is ready
// const userRoles = authStore.roles const userRoles = authStore.userRole
const userRoles = ['admisi'] // const userRoles = ['admisi']
const hasRequiredRole = requiredRoles.some((role) => userRoles.includes(role)) const hasRequiredRole = requiredRoles.some((role) => userRoles.includes(role))
if (!hasRequiredRole) { if (!hasRequiredRole) {
+3 -2
View File
@@ -2,9 +2,10 @@ export const useUserStore = defineStore(
'user', 'user',
() => { () => {
const user = ref<any | null>(null) const user = ref<any | null>(null)
// const token = useCookie('authentication')
const isAuthenticated = computed(() => !!user.value) 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) => { const login = async (userData: any) => {
user.value = userData user.value = userData
@@ -17,7 +18,7 @@ export const useUserStore = defineStore(
return { return {
user, user,
isAuthenticated, isAuthenticated,
userRole, userRole: ['admisi'],
login, login,
logout, logout,
} }