From fb9af625c6b2c2909fc818304a5449c106696076 Mon Sep 17 00:00:00 2001 From: Julien WITTOUCK Date: Wed, 10 Sep 2025 09:26:48 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20:=20handle=20missing=20access=20?= =?UTF-8?q?token=20in=20`userGitlabApi`=20and=20improve=20error=20logging?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../classrooms/gitlab/GitlabApiFactory.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/main/java/fr/univ_lille/gitlab/classrooms/gitlab/GitlabApiFactory.java b/src/main/java/fr/univ_lille/gitlab/classrooms/gitlab/GitlabApiFactory.java index d65adb8..4c72fc6 100644 --- a/src/main/java/fr/univ_lille/gitlab/classrooms/gitlab/GitlabApiFactory.java +++ b/src/main/java/fr/univ_lille/gitlab/classrooms/gitlab/GitlabApiFactory.java @@ -1,8 +1,11 @@ package fr.univ_lille.gitlab.classrooms.gitlab; import fr.univ_lille.gitlab.classrooms.users.ClassroomUser; -import org.gitlab4j.api.Constants; +import org.gitlab4j.models.Constants; import org.gitlab4j.api.GitLabApi; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.security.oauth2.client.ClientAuthorizationRequiredException; import org.springframework.security.oauth2.client.OAuth2AuthorizeRequest; import org.springframework.security.oauth2.client.OAuth2AuthorizedClientManager; import org.springframework.stereotype.Component; @@ -14,6 +17,8 @@ class GitlabApiFactory { private final OAuth2AuthorizedClientManager oAuth2AuthorizedClientManager; + private static final Logger LOGGER = LoggerFactory.getLogger(GitlabApiFactory.class); + public GitlabApiFactory(GitlabProperties gitlabProperties, OAuth2AuthorizedClientManager oAuth2AuthorizedClientManager) { this.gitlabProperties = gitlabProperties; this.oAuth2AuthorizedClientManager = oAuth2AuthorizedClientManager; @@ -21,18 +26,25 @@ class GitlabApiFactory { /** * Builds a Gitlab Api client using the credentials of the given classroom user. + * * @param user * @return */ - public GitLabApi userGitlabApi(ClassroomUser user){ + public GitLabApi userGitlabApi(ClassroomUser user) { var oauth2AuthorizedRequest = OAuth2AuthorizeRequest .withClientRegistrationId("gitlab") .principal(user.getName()) .build(); var client = new GitLabApi(gitlabProperties.url(), Constants.TokenType.OAUTH2_ACCESS, ""); client.setAuthTokenSupplier(() -> { - var oauth2Client = oAuth2AuthorizedClientManager.authorize(oauth2AuthorizedRequest); - return oauth2Client.getAccessToken().getTokenValue(); + try { + var oauth2Client = oAuth2AuthorizedClientManager.authorize(oauth2AuthorizedRequest); + LOGGER.debug("Access token for user '{}' is {}", user.getName(), oauth2Client.getAccessToken().getTokenValue()); + return oauth2Client.getAccessToken().getTokenValue(); + } catch (ClientAuthorizationRequiredException e) { + LOGGER.error("Unable to get an access token for user '{}'", user.getName()); + throw new GitLabAuthenticationException("Unable to get an access token for user '%s'".formatted(user.getName())); + } }); return client; } -- 2.51.2