Updated the projects.ts controller

This commit is contained in:
Mathias Wagner 2023-08-03 23:57:58 +02:00
parent 079202205e
commit 9ed4143560
Signed by: Mathias
GPG Key ID: B8DC354B0A1F5B44

View File

@ -2,9 +2,13 @@ import { IProject, IProjectPlan, Project } from "@models/Project";
import { encryptClearField } from "@utils/decryption";
import { Types } from "mongoose";
import crypto from "crypto";
import { IKeyRole } from "@models/AccessKey";
import { AccessKey, IKeyRole } from "@models/AccessKey";
import { Member } from "@models/Member";
import { planLimits } from "../limits/plans";
import { License } from "@models/License";
import { Permission } from "@models/Permission";
import { Group } from "@models/Group";
import { MetaData } from "@models/MetaData";
export const checkProjectAccess = (requiredPermission: IKeyRole) => async (userId: string, projectId: string) => {
if (!Types.ObjectId.isValid(projectId))
@ -64,7 +68,12 @@ export const deleteProject = async (id: string, userId: string) => {
const project = await checkProjectAccess(IKeyRole.ADMIN)(userId, id);
if ("code" in project) return project;
// TODO: Delete all licenses, groups, permissions, ..
License.deleteMany({ projectId: encryptClearField(project.id) });
Permission.deleteMany({ projectId: encryptClearField(project.id) });
Group.deleteMany({ projectId: encryptClearField(project.id) });
MetaData.deleteMany({ projectId: encryptClearField(project.id) });
AccessKey.deleteMany({ projectId: encryptClearField(project.id) });
Member.deleteMany({ projectId: encryptClearField(project.id) });
await project?.deleteOne();
};
@ -75,8 +84,6 @@ export const patchProject = async (id: string, userId: string, config: {
const project = await checkProjectAccess(IKeyRole.MANAGE)(userId, id);
if ("code" in project) return project;
// TODO: Check if groups & permissions exist
await project.updateOne({ name: config.name, defaults: Object.assign(project.defaults, config.defaults) });
};