merge dev
This commit is contained in:
+23
-15
@@ -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 === 'system' || (role in roleAccess)) // 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) => role === 'system' || roleAccess[role]?.includes(permission)) // 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 getUserPermissions = (roleAccess: RoleAccesses, _userRoles?: string[]): Permission[] => {
|
||||
const roles = authStore.userRole
|
||||
// const roles = ['admisi']
|
||||
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),
|
||||
|
||||
Reference in New Issue
Block a user