diff --git a/src/controller/projects.ts b/src/controller/projects.ts index c4eb113..55b8934 100644 --- a/src/controller/projects.ts +++ b/src/controller/projects.ts @@ -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) }); };