feat/menu-structure: update access control
This commit is contained in:
No files matched your search
+48
-48
@@ -2,67 +2,67 @@ import type { RoleAccess } from '~/models/role'
|
|||||||
|
|
||||||
export const PAGE_PERMISSIONS = {
|
export const PAGE_PERMISSIONS = {
|
||||||
'/patient': {
|
'/patient': {
|
||||||
doctor: ['R'],
|
'emp|doc': ['R'],
|
||||||
nurse: ['R'],
|
'emp|nur': ['R'],
|
||||||
admisi: ['C', 'R', 'U', 'D'],
|
'emp|reg': ['C', 'R', 'U', 'D'],
|
||||||
pharmacy: ['R'],
|
'emp|pha': ['R'],
|
||||||
billing: ['R'],
|
'emp|pay': ['R'],
|
||||||
management: ['R'],
|
'emp|mng': ['R'],
|
||||||
},
|
},
|
||||||
'/doctor': {
|
'/doctor': {
|
||||||
doctor: ['C', 'R', 'U', 'D'],
|
'emp|doc': ['C', 'R', 'U', 'D'],
|
||||||
nurse: ['R'],
|
'emp|nur': ['R'],
|
||||||
admisi: ['R'],
|
'emp|reg': ['R'],
|
||||||
pharmacy: ['R'],
|
'emp|pha': ['R'],
|
||||||
billing: ['R'],
|
'emp|pay': ['R'],
|
||||||
management: ['R'],
|
'emp|mng': ['R'],
|
||||||
},
|
},
|
||||||
'/satusehat': {
|
'/satusehat': {
|
||||||
doctor: ['R'],
|
'emp|doc': ['R'],
|
||||||
nurse: ['R'],
|
'emp|nur': ['R'],
|
||||||
admisi: ['C', 'R', 'U', 'D'],
|
'emp|reg': ['C', 'R', 'U', 'D'],
|
||||||
pharmacy: ['R'],
|
'emp|pha': ['R'],
|
||||||
billing: ['R'],
|
'emp|pay': ['R'],
|
||||||
management: ['R'],
|
'emp|mng': ['R'],
|
||||||
},
|
},
|
||||||
'/outpatient/encounter': {
|
'/outpatient/encounter': {
|
||||||
doctor: ['C', 'R', 'U', 'D'],
|
'emp|doc': ['C', 'R', 'U', 'D'],
|
||||||
nurse: ['C', 'R', 'U', 'D'],
|
'emp|nur': ['C', 'R', 'U', 'D'],
|
||||||
admisi: ['R'],
|
'emp|reg': ['R'],
|
||||||
pharmacy: ['R'],
|
'emp|pha': ['R'],
|
||||||
billing: ['R'],
|
'emp|pay': ['R'],
|
||||||
management: ['R'],
|
'emp|mng': ['R'],
|
||||||
},
|
},
|
||||||
'/emergency/encounter': {
|
'/emergency/encounter': {
|
||||||
doctor: ['C', 'R', 'U', 'D'],
|
'emp|doc': ['C', 'R', 'U', 'D'],
|
||||||
nurse: ['C', 'R', 'U', 'D'],
|
'emp|nur': ['C', 'R', 'U', 'D'],
|
||||||
admisi: ['R'],
|
'emp|reg': ['R'],
|
||||||
pharmacy: ['R'],
|
'emp|pha': ['R'],
|
||||||
billing: ['R'],
|
'emp|pay': ['R'],
|
||||||
management: ['R'],
|
'emp|mng': ['R'],
|
||||||
},
|
},
|
||||||
'/inpatient/encounter': {
|
'/inpatient/encounter': {
|
||||||
doctor: ['C', 'R', 'U', 'D'],
|
'emp|doc': ['C', 'R', 'U', 'D'],
|
||||||
nurse: ['C', 'R', 'U', 'D'],
|
'emp|nur': ['C', 'R', 'U', 'D'],
|
||||||
admisi: ['R'],
|
'emp|reg': ['R'],
|
||||||
pharmacy: ['R'],
|
'emp|pha': ['R'],
|
||||||
billing: ['R'],
|
'emp|pay': ['R'],
|
||||||
management: ['R'],
|
'emp|mng': ['R'],
|
||||||
},
|
},
|
||||||
'/rehab/encounter': {
|
'/rehab/encounter': {
|
||||||
doctor: ['C', 'R', 'U', 'D'],
|
'emp|doc': ['C', 'R', 'U', 'D'],
|
||||||
nurse: ['R'],
|
'emp|nur': ['R'],
|
||||||
admisi: ['R'],
|
'emp|reg': ['R'],
|
||||||
pharmacy: ['R'],
|
'emp|pha': ['R'],
|
||||||
billing: ['R'],
|
'emp|pay': ['R'],
|
||||||
management: ['R'],
|
'emp|mng': ['R'],
|
||||||
},
|
},
|
||||||
'/rehab/registration': {
|
'/rehab/registration': {
|
||||||
doctor: ['C', 'R', 'U', 'D'],
|
'emp|doc': ['C', 'R', 'U', 'D'],
|
||||||
nurse: ['R'],
|
'emp|nur': ['R'],
|
||||||
admisi: ['R'],
|
'emp|reg': ['R'],
|
||||||
pharmacy: ['R'],
|
'emp|pha': ['R'],
|
||||||
billing: ['R'],
|
'emp|pay': ['R'],
|
||||||
management: ['R'],
|
'emp|mng': ['R'],
|
||||||
},
|
},
|
||||||
} as const satisfies Record<string, RoleAccess>
|
} as const satisfies Record<string, RoleAccess>
|
||||||
+24
-5
@@ -5,12 +5,13 @@ export const useUserStore = defineStore(
|
|||||||
// const token = useCookie('authentication')
|
// const token = useCookie('authentication')
|
||||||
|
|
||||||
const isAuthenticated = computed(() => !!user.value)
|
const isAuthenticated = computed(() => !!user.value)
|
||||||
|
|
||||||
const userRole = computed(() => {
|
const userRole = computed(() => {
|
||||||
const roles = user.value?.roles || []
|
return user.value?.roles || []
|
||||||
return roles.map((input: string) => {
|
// return roles.map((input: string) => {
|
||||||
const parts = input.split('-')
|
// const parts = input.split('|')
|
||||||
return parts.length > 1 ? parts[1]: parts[0]
|
// return parts.length > 1 ? parts[1]: parts[0]
|
||||||
})
|
// })
|
||||||
})
|
})
|
||||||
|
|
||||||
const login = async (userData: any) => {
|
const login = async (userData: any) => {
|
||||||
@@ -21,12 +22,30 @@ export const useUserStore = defineStore(
|
|||||||
user.value = null
|
user.value = null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const setActiveRole = (role: string) => {
|
||||||
|
if (user.value && user.value.roles.includes(role)) {
|
||||||
|
user.value.activeRole = role
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const getActiveRole = () => {
|
||||||
|
if (user.value?.activeRole) {
|
||||||
|
return user.value.activeRole
|
||||||
|
}
|
||||||
|
if (user.value?.roles.length > 0) {
|
||||||
|
user.value.activeRole = user.value.roles[0]
|
||||||
|
return user.value.activeRole
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
user,
|
user,
|
||||||
isAuthenticated,
|
isAuthenticated,
|
||||||
userRole,
|
userRole,
|
||||||
login,
|
login,
|
||||||
logout,
|
logout,
|
||||||
|
setActiveRole,
|
||||||
|
getActiveRole,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user