Continued with clearing more of the team's requests

This commit is contained in:
Tiago Ribeiro
2024-10-28 15:35:57 +00:00
parent fa0c502467
commit ef857fee59
10 changed files with 70 additions and 19 deletions

View File

@@ -52,7 +52,7 @@ export function findAllowedEntitiesSomePermissions(user: User, entities: EntityW
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)
const userEntity = findBy(user.entities, 'id', entity?.id)
if (!userEntity) return false
const role = findBy(entity.roles, 'id', userEntity.role)

View File

@@ -3,9 +3,11 @@ import { getGroupsForUser, getParticipantGroups, getUserGroups, getUsersGroups }
import { uniq } from "lodash";
import { getUserCodes } from "./codes.be";
import client from "@/lib/mongodb";
import { WithEntities } from "@/interfaces/entity";
import { EntityWithRoles, WithEntities } from "@/interfaces/entity";
import { getEntity } from "./entities.be";
import { getRole } from "./roles.be";
import { findAllowedEntities } from "./permissions";
import { mapBy } from ".";
const db = client.db(process.env.MONGODB_DB);
@@ -138,3 +140,17 @@ export async function getUserBalance(user: User) {
codes.filter((x) => !participants.includes(x.userId || "") && !corporateUsers.map((u) => u.id).includes(x.userId || "")).length
);
}
export const filterAllowedUsers = async (user: User, entities: EntityWithRoles[]) => {
const studentsAllowedEntities = findAllowedEntities(user, entities, 'view_students')
const teachersAllowedEntities = findAllowedEntities(user, entities, 'view_teachers')
const corporateAllowedEntities = findAllowedEntities(user, entities, 'view_corporates')
const masterCorporateAllowedEntities = findAllowedEntities(user, entities, 'view_mastercorporates')
const students = await getEntitiesUsers(mapBy(studentsAllowedEntities, 'id'), {type: "student"})
const teachers = await getEntitiesUsers(mapBy(teachersAllowedEntities, 'id'), {type: "teacher"})
const corporates = await getEntitiesUsers(mapBy(corporateAllowedEntities, 'id'), {type: "corporate"})
const masterCorporates = await getEntitiesUsers(mapBy(masterCorporateAllowedEntities, 'id'), {type: "mastercorporate"})
return [...students, ...teachers, ...corporates, ...masterCorporates]
}

View File

@@ -1,8 +1,11 @@
import { WithLabeledEntities } from "@/interfaces/entity";
import { EntityWithRoles, WithLabeledEntities } from "@/interfaces/entity";
import { Group, User } from "@/interfaces/user";
import { getUserCompanyName, USER_TYPE_LABELS } from "@/resources/user";
import { capitalize } from "lodash";
import moment from "moment";
import { mapBy } from ".";
import { findAllowedEntities } from "./permissions";
import { getEntitiesUsers } from "./users.be";
export interface UserListRow {
name: string;