Started implementing the roles permissions
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
import { EntityWithRoles, Role } from "@/interfaces/entity";
|
||||
import {PermissionType} from "@/interfaces/permissions";
|
||||
import {User, Type, userTypes} from "@/interfaces/user";
|
||||
import { RolePermission } from "@/resources/entityPermissions";
|
||||
import axios from "axios";
|
||||
import { findBy, mapBy } from ".";
|
||||
|
||||
export function checkAccess(user: User, types: Type[], permissions?: PermissionType[], permission?: PermissionType) {
|
||||
if (!user) {
|
||||
@@ -8,7 +11,7 @@ export function checkAccess(user: User, types: Type[], permissions?: PermissionT
|
||||
}
|
||||
|
||||
// if(user.type === '') {
|
||||
if (!user.type) {
|
||||
if (!user?.type) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -32,6 +35,25 @@ export function checkAccess(user: User, types: Type[], permissions?: PermissionT
|
||||
return true;
|
||||
}
|
||||
|
||||
export function findAllowedEntities(user: User, entities: EntityWithRoles[], permission: RolePermission) {
|
||||
if (["admin", "developer"].includes(user?.type)) return entities
|
||||
|
||||
const allowedEntities = entities.filter((e) => doesEntityAllow(user, e, permission))
|
||||
return allowedEntities
|
||||
}
|
||||
|
||||
export function doesEntityAllow(user: User, entity: EntityWithRoles, permission: RolePermission) {
|
||||
if (["admin", "developer"].includes(user?.type)) return true
|
||||
|
||||
const userEntity = findBy(user.entities, 'id', entity.id)
|
||||
if (!userEntity) return false
|
||||
|
||||
const role = findBy(entity.roles, 'id', userEntity.role)
|
||||
if (!role) return false
|
||||
|
||||
return role.permissions.includes(permission)
|
||||
}
|
||||
|
||||
export function getTypesOfUser(types: Type[]) {
|
||||
// basicly generate a list of all types except the excluded ones
|
||||
return userTypes.filter((userType) => {
|
||||
|
||||
Reference in New Issue
Block a user