diff --git a/ExpressAPI/src/managers/GitlabManager.ts b/ExpressAPI/src/managers/GitlabManager.ts index 05d9f2e849dc10eab2445b8885c0b474774a7d43..096161b7087789b45ed5797e4202dca44d0d546d 100644 --- a/ExpressAPI/src/managers/GitlabManager.ts +++ b/ExpressAPI/src/managers/GitlabManager.ts @@ -274,11 +274,10 @@ class GitlabManager { } async moveRepositorySubGroup(repoId : number, newRepoId : number) { - const response = await axios.put(this.getApiUrl(GitlabRoute.REPOSITORY_MOVE_SUBGROUP).replace('{{id}}', String(repoId)), { - namespace : newRepoId - } - ); - + const response = await axios.put(this.getApiUrl(GitlabRoute.REPOSITORY_MOVE_SUBGROUP).replace('{{id}}', String(repoId)), + { + namespace : newRepoId + }); return response.data; } } diff --git a/ExpressAPI/src/routes/AssignmentRoutes.ts b/ExpressAPI/src/routes/AssignmentRoutes.ts index a0d2fa81f11851c98380a14c16ac4a25877e9716..0cdda907cba31b9873d68b41d42ae98102a24ed0 100644 --- a/ExpressAPI/src/routes/AssignmentRoutes.ts +++ b/ExpressAPI/src/routes/AssignmentRoutes.ts @@ -50,8 +50,8 @@ class AssignmentRoutes implements RoutesManager { backend.patch('/assignments/:assignmentNameOrUrl/publish', SecurityMiddleware.check(true, SecurityCheckType.ASSIGNMENT_STAFF), this.publishAssignment.bind(this)); backend.patch('/assignments/:assignmentNameOrUrl/unpublish', SecurityMiddleware.check(true, SecurityCheckType.ASSIGNMENT_STAFF), this.unpublishAssignment.bind(this)); - - backend.patch('/assignments/:assignmentNameOrUrl/deleted', SecurityMiddleware.check(false, SecurityCheckType.ASSIGNMENT_STAFF), this.deleteAssignment.bind(this)); + + backend.patch('/assignments/:assignmentNameOrUrl/deleted', SecurityMiddleware.check(true, SecurityCheckType.ASSIGNMENT_STAFF), this.deleteAssignment.bind(this)); } // Get an assignment by its name or gitlab url private async getAssignment(req: express.Request, res: express.Response) { @@ -215,19 +215,37 @@ class AssignmentRoutes implements RoutesManager { private async deleteAssignment(req : express.Request, res : express.Response) { const nameAssignment = req.params.assignmentNameOrUrl; - // recup l'id du repo en question - await GitlabManager.removeRepositoryMember(13893, 627); - await GitlabManager.moveRepositorySubGroup(13893, 14193); + const repo = await db.assignment.findUnique({ + where : { + name : String(nameAssignment) + } + }); + + if (!repo) { + return req.session.sendResponse(res, StatusCodes.NOT_FOUND); + } + const members = await GitlabManager.getRepositoryMembers(String(repo['gitlabId'])); + members.forEach(async member => { + if ( member.id !== Config.gitlab.account.id ) { + await GitlabManager.removeRepositoryMember(repo['gitlabId'], member.id); + } + }); + await GitlabManager.moveRepositorySubGroup(repo['gitlabId'], 14193); + + // recup l'id du repo en question + await GitlabManager.removeRepositoryMember(repo['gitlabId'], 627); + + await db.assignment.update({ where : { - name : nameAssignment + name : String(nameAssignment) }, data : { deleted : true } }); - + return req.session.sendResponse(res, StatusCodes.OK); } }