🐛 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() {
|
||||
// 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 roles = ['admisi']
|
||||
const roles = authStore.userRole
|
||||
return roles.some((role: string) => role in roleAccess)
|
||||
}
|
||||
|
||||
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))
|
||||
}
|
||||
|
||||
const getUserPermissions = (roleAccess: RoleAccess, _userRoles?: string[]): Permission[] => {
|
||||
// const roles = userRoles || authStore.roles
|
||||
const roles = ['admisi']
|
||||
const roles = authStore.userRole
|
||||
// const roles = ['admisi']
|
||||
const permissions = new Set<Permission>()
|
||||
|
||||
roles.forEach((role) => {
|
||||
|
||||
@@ -2,7 +2,6 @@ export default defineNuxtRouteMiddleware((to) => {
|
||||
if (to.meta.public) return
|
||||
|
||||
const { $pinia } = useNuxtApp()
|
||||
|
||||
if (import.meta.client) {
|
||||
const userStore = useUserStore($pinia)
|
||||
|
||||
|
||||
@@ -19,8 +19,8 @@ export default defineNuxtRouteMiddleware((to) => {
|
||||
const requiredRoles = to.meta.roles as string[]
|
||||
if (requiredRoles && requiredRoles.length > 0) {
|
||||
// FIXME: change this dummy roles, when api is ready
|
||||
// const userRoles = authStore.roles
|
||||
const userRoles = ['admisi']
|
||||
const userRoles = authStore.userRole
|
||||
// const userRoles = ['admisi']
|
||||
const hasRequiredRole = requiredRoles.some((role) => userRoles.includes(role))
|
||||
|
||||
if (!hasRequiredRole) {
|
||||
|
||||
+3
-2
@@ -2,9 +2,10 @@ export const useUserStore = defineStore(
|
||||
'user',
|
||||
() => {
|
||||
const user = ref<any | null>(null)
|
||||
// const token = useCookie('authentication')
|
||||
|
||||
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) => {
|
||||
user.value = userData
|
||||
@@ -17,7 +18,7 @@ export const useUserStore = defineStore(
|
||||
return {
|
||||
user,
|
||||
isAuthenticated,
|
||||
userRole,
|
||||
userRole: ['admisi'],
|
||||
login,
|
||||
logout,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user