From 3558672f9aba74722c5756ea23856b2a994ec705 Mon Sep 17 00:00:00 2001 From: Munawwirul Jamal Date: Fri, 24 Oct 2025 15:34:31 +0700 Subject: [PATCH] dev: hotfix, system by-passes role-access --- app/composables/useRBAC.ts | 7 +++---- app/pages/(features)/rehab/encounter/index.vue | 2 +- app/stores/user.ts | 5 ++++- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/composables/useRBAC.ts b/app/composables/useRBAC.ts index 543c3b90..ced57e3e 100644 --- a/app/composables/useRBAC.ts +++ b/app/composables/useRBAC.ts @@ -9,13 +9,12 @@ export function useRBAC() { const checkRole = (roleAccess: RoleAccess, _userRoles?: string[]): boolean => { const roles = authStore.userRole - return roles.some((role: string) => role in roleAccess) + return roles.some((role: string) => (role in roleAccess) || role === 'system') // system by-passes this check } const checkPermission = (roleAccess: RoleAccess, permission: Permission, _userRoles?: string[]): boolean => { 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) || role === 'system') // system by-passes this check } const getUserPermissions = (roleAccess: RoleAccess, _userRoles?: string[]): Permission[] => { @@ -23,7 +22,7 @@ export function useRBAC() { // const roles = ['admisi'] const permissions = new Set() - roles.forEach((role) => { + roles.forEach((role: string) => { if (roleAccess[role]) { roleAccess[role].forEach((permission) => permissions.add(permission)) } diff --git a/app/pages/(features)/rehab/encounter/index.vue b/app/pages/(features)/rehab/encounter/index.vue index 9d06c9e0..7a8564a8 100644 --- a/app/pages/(features)/rehab/encounter/index.vue +++ b/app/pages/(features)/rehab/encounter/index.vue @@ -5,7 +5,7 @@ import { PAGE_PERMISSIONS } from '~/lib/page-permission' definePageMeta({ middleware: ['rbac'], - roles: ['doctor', 'nurse', 'admisi', 'pharmacy', 'billing', 'management'], + roles: ['system', 'doctor', 'nurse', 'admisi', 'pharmacy', 'billing', 'management'], title: 'Daftar Kunjungan', contentFrame: 'cf-full-width', }) diff --git a/app/stores/user.ts b/app/stores/user.ts index cbe92a69..14ab7134 100644 --- a/app/stores/user.ts +++ b/app/stores/user.ts @@ -7,7 +7,10 @@ export const useUserStore = defineStore( const isAuthenticated = computed(() => !!user.value) const userRole = computed(() => { const roles = user.value?.roles || [] - return roles.map((v) => v.split('-')[1]) + return roles.map((input: string) => { + const parts = input.split('-') + return parts.length > 1 ? parts[1]: parts[0] + }) }) const login = async (userData: any) => {