From 6ac725abbb5efc8034feb51dcaa963a9cf1d18e3 Mon Sep 17 00:00:00 2001 From: Julien WITTOUCK Date: Mon, 30 Dec 2024 15:59:38 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20:=20use=20teacher=20authenticati?= =?UTF-8?q?on=20token=20to=20archive=20projects?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gitlab/classrooms/gitlab/GitlabImpl.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/fr/univ_lille/gitlab/classrooms/gitlab/GitlabImpl.java b/src/main/java/fr/univ_lille/gitlab/classrooms/gitlab/GitlabImpl.java index c162f61..0efe58b 100644 --- a/src/main/java/fr/univ_lille/gitlab/classrooms/gitlab/GitlabImpl.java +++ b/src/main/java/fr/univ_lille/gitlab/classrooms/gitlab/GitlabImpl.java @@ -120,8 +120,17 @@ class GitlabImpl implements Gitlab { public void archiveProject(StudentExerciseAssignment studentExerciseAssignment) throws GitLabException { var projectId = studentExerciseAssignment.getGitlabProjectId(); + var classroom = studentExerciseAssignment.getAssignment().getClassroom(); + var teacher = classroom.getTeachers().stream().findFirst(); + + if(teacher.isEmpty()){ + throw new GitLabException("Could not archive student %s project for assignment %s. Classroom has no teacher.".formatted(studentExerciseAssignment.getStudent().getName(), studentExerciseAssignment.getAssignment().getName())); + } + // get a gitlab api client with the teacher's rights + var teacherGitlabApi = this.gitlabApiFactory.userGitlabApi(teacher.get()); + try { - this.gitLabApi.getProjectApi().archiveProject(projectId); + teacherGitlabApi.getProjectApi().archiveProject(projectId); } catch (GitLabApiException e) { throw new GitLabException("Unable to archive GitLab project with id '%s'".formatted(projectId), e); } -- 2.51.2