diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/security/customproviders/ConfigurableProvider/ConfigurableProviderCustomProviderImpl.java b/dmp-backend/web/src/main/java/eu/eudat/logic/security/customproviders/ConfigurableProvider/ConfigurableProviderCustomProviderImpl.java index eec2b4141..b5d467ff3 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/security/customproviders/ConfigurableProvider/ConfigurableProviderCustomProviderImpl.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/security/customproviders/ConfigurableProvider/ConfigurableProviderCustomProviderImpl.java @@ -2,6 +2,8 @@ package eu.eudat.logic.security.customproviders.ConfigurableProvider; import eu.eudat.logic.security.customproviders.ConfigurableProvider.entities.oauth2.Oauth2ConfigurableProviderUserSettings; import eu.eudat.logic.security.validators.configurableProvider.helpers.ConfigurableProviderResponseToken; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; @@ -11,10 +13,12 @@ import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; +import java.util.HashMap; import java.util.Map; @Component("configurableProviderCustomProvider") public class ConfigurableProviderCustomProviderImpl implements ConfigurableProviderCustomProvider { + private static final Logger logger = LoggerFactory.getLogger(ConfigurableProviderCustomProviderImpl.class); @Override public ConfigurableProviderResponseToken getAccessToken(String code, String redirectUri, String clientId, String clientSecret, String accessTokenUrl, @@ -32,7 +36,22 @@ public class ConfigurableProviderCustomProviderImpl implements ConfigurableProvi map.add("client_secret", clientSecret); HttpEntity> request = new HttpEntity<>(map, headers); + logger.debug("----------------------------------------------"); + logger.debug("Sending request to access token url: " + accessTokenUrl); + logger.debug("The request sent is: "); + map.forEach((key, value) -> logger.debug(key + ": " + value)); + logger.debug("----------------------------------------------"); + Map values = template.postForObject(accessTokenUrl, request, Map.class); + try { + logger.debug("----------------------------------------------"); + logger.debug("Returned values from access token url request:"); + values.forEach((key, value) -> logger.debug(key + ": " + value)); + logger.debug("----------------------------------------------"); + } catch (NullPointerException e){ + logger.error(e.getMessage(), e); + values = new HashMap<>(); + } ConfigurableProviderResponseToken responseToken = new ConfigurableProviderResponseToken(); responseToken.setAccessToken((String) values.get(access_token)); if (expires_in != null && !expires_in.isEmpty()) { @@ -48,7 +67,26 @@ public class ConfigurableProviderCustomProviderImpl implements ConfigurableProvi HttpHeaders headers = this.createBearerAuthHeaders(accessToken); HttpEntity entity = new HttpEntity<>(headers); + logger.debug("----------------------------------------------"); + logger.debug("Sending request to user info url: " + user.getUser_info_url()); + logger.debug("Using access token: " + accessToken); + logger.debug("----------------------------------------------"); + Map values = restTemplate.exchange(user.getUser_info_url(), HttpMethod.GET, entity, Map.class).getBody(); + try { + logger.debug("----------------------------------------------"); + logger.debug("Returned values from user info url request:"); + values.forEach((key, value) -> logger.debug(key + ": " + value)); + logger.debug("-------------------------------------------"); + } catch (NullPointerException e){ + logger.error(e.getMessage(), e); + values = new HashMap<>(); + } + + logger.debug("----------------------------------------------"); + logger.debug("Searching in user info response for these fields: " + user.getId() + ", " + user.getName() + ", " + user.getEmail()); + logger.debug("----------------------------------------------"); + return new ConfigurableProviderUser().getConfigurableProviderUser(values, user); }