Add methods for requiring more specific levels of teamleader auth

+ Add AuthError
This commit is contained in:
Stephan
2022-05-27 23:08:23 +02:00
parent a9c182cf64
commit 2a33b703bc
5 changed files with 52 additions and 3 deletions
+7 -1
View File
@@ -2,9 +2,12 @@ import { Role } from "@prisma/client";
import { Request, Response } from "express";
import { z } from "zod";
import prisma from "../lib/prisma";
import { requireLeaderOfTeam, requireResponsibleForParticipant } from "../Middleware/auth/teamleaderAuth";
import NotFoundError from "../Middleware/error/NotFoundError";
import { DataType, generateInvalidBodyError } from "./common";
require("express-async-errors");
/**
*
* @param teamPid: Pid of the team to add the roles to
@@ -29,7 +32,8 @@ export async function createRolesForTeam(teamPid: string) {
export async function getRolesForTeam(req: Request<{ teamPid: string }>, res: Response) {
const teamPid = req.params.teamPid;
// TODO: Check if leader of team
requireLeaderOfTeam(req.teamleader, teamPid);
const roles = await prisma.role.findMany({
where: { team: { pid: teamPid } },
select: {
@@ -63,6 +67,8 @@ export async function assignParticipantToRole(req: Request<{ pid: string }>, res
const { participantPid } = zBody.data;
const rolePid = req.params.pid;
requireResponsibleForParticipant(req.teamleader, participantPid);
const schema = await prisma.role.findFirst({
where: { pid: rolePid, team: { participants: { some: { pid: participantPid } } } },
select: { participant: { select: { pid: true, firstName: true, lastName: true } } },