🐛 fix (rbac): use userStore to determine user roles
This commit is contained in:
@@ -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) => {
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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
@@ -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,
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user