Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into feat/laporan-tindakan-185

This commit is contained in:
Khafid Prayoga
2025-12-02 15:06:56 +07:00
265 changed files with 14639 additions and 2842 deletions

No files matched your search

+24 -16
View File
@@ -1,4 +1,5 @@
import type { Permission, RoleAccess } from '~/models/role'
import type { Permission, RoleAccesses } from '~/models/role'
import { systemCode } from '~/const/common/role'
export interface PageOperationPermission {
canRead: boolean
@@ -7,7 +8,6 @@ export interface PageOperationPermission {
canDelete: boolean
}
/**
* Check if user has access to a page
*/
@@ -15,19 +15,27 @@ export function useRBAC() {
// NOTE: this roles was dummy for testing only, it should taken from the user store
const authStore = useUserStore()
const checkRole = (roleAccess: RoleAccess, _userRoles?: string[]): boolean => {
const roles = authStore.userRole
return roles.some((role: string) => (role in roleAccess) || role === 'system') // system by-passes this check
const checkRole = (roleAccesses: RoleAccesses, _userRoles?: string[]): boolean => {
const activeRole = authStore.getActiveRole() || ''
if (activeRole === systemCode) {
return true
}
return (activeRole in roleAccesses);
}
const checkPermission = (roleAccess: RoleAccess, permission: Permission, _userRoles?: string[]): boolean => {
const roles = authStore.userRole
return roles.some((role: string) => roleAccess[role]?.includes(permission) || role === 'system') // system by-passes this check
const checkPermission = (roleAccesses: RoleAccesses, permission: Permission, _userRoles?: string[]): boolean => {
const activeRole = authStore.getActiveRole() || ''
if (activeRole === systemCode) {
return true
}
if (activeRole in roleAccesses && roleAccesses[activeRole]) {
return roleAccesses[activeRole].includes(permission)
}
return false
}
const getUserPermissions = (roleAccess: RoleAccess, _userRoles?: string[]): Permission[] => {
const roles = authStore.userRole
// const roles = ['admisi']
const getUserPermissions = (roleAccess: RoleAccesses, _userRoles?: string[]): Permission[] => {
const roles = authStore.userRoles
const permissions = new Set<Permission>()
roles.forEach((role: string) => {
@@ -39,12 +47,12 @@ export function useRBAC() {
return Array.from(permissions)
}
const hasCreateAccess = (roleAccess: RoleAccess) => checkPermission(roleAccess, 'C')
const hasReadAccess = (roleAccess: RoleAccess) => checkPermission(roleAccess, 'R')
const hasUpdateAccess = (roleAccess: RoleAccess) => checkPermission(roleAccess, 'U')
const hasDeleteAccess = (roleAccess: RoleAccess) => checkPermission(roleAccess, 'D')
const hasCreateAccess = (roleAccess: RoleAccesses) => checkPermission(roleAccess, 'C')
const hasReadAccess = (roleAccess: RoleAccesses) => checkPermission(roleAccess, 'R')
const hasUpdateAccess = (roleAccess: RoleAccesses) => checkPermission(roleAccess, 'U')
const hasDeleteAccess = (roleAccess: RoleAccesses) => checkPermission(roleAccess, 'D')
const getPagePermissions = (roleAccess: RoleAccess): PageOperationPermission => ({
const getPagePermissions = (roleAccess: RoleAccesses): PageOperationPermission => ({
canRead : hasReadAccess(roleAccess),
canCreate: hasCreateAccess(roleAccess),
canUpdate: hasUpdateAccess(roleAccess),