From f26ea5a8fd86beb97e7323a631a1dd8f26ab7c8a Mon Sep 17 00:00:00 2001 From: Konstantinos Triantafyllou Date: Tue, 16 Mar 2021 07:52:52 +0000 Subject: [PATCH] [Users | Trunk]: Fix condition on verify role methods --- .../usermanagement/api/RegistryService.java | 4 +-- .../utils/AuthorizationService.java | 33 +++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/main/java/eu/dnetlib/openaire/usermanagement/api/RegistryService.java b/src/main/java/eu/dnetlib/openaire/usermanagement/api/RegistryService.java index f595180..d3af255 100644 --- a/src/main/java/eu/dnetlib/openaire/usermanagement/api/RegistryService.java +++ b/src/main/java/eu/dnetlib/openaire/usermanagement/api/RegistryService.java @@ -313,7 +313,7 @@ public class RegistryService { if (verification != null && verification.getVerificationType().equals("manager")) { Integer coPersonId = calls.getCoPersonIdByEmail(verification.getEmail()); if (coPersonId != null) { - if (coPersonId.equals(calls.getCoPersonIdByIdentifier())) { + if (verification.getEmail().equalsIgnoreCase(authorizationService.getEmail())) { if (verification.getVerificationCode().equals(code)) { Integer couId = calls.getCouId(verification.getType(), verification.getEntity()); if (couId != null) { @@ -379,7 +379,7 @@ public class RegistryService { if (verification != null && verification.getVerificationType().equals("member")) { Integer coPersonId = calls.getCoPersonIdByEmail(verification.getEmail()); if (coPersonId != null) { - if (coPersonId.equals(calls.getCoPersonIdByIdentifier())) { + if (verification.getEmail().equalsIgnoreCase(authorizationService.getEmail())) { if (verification.getVerificationCode().equals(code)) { Integer couId = calls.getCouId(verification.getType(), verification.getEntity(), false); if (couId != null) { diff --git a/src/main/java/eu/dnetlib/openaire/usermanagement/utils/AuthorizationService.java b/src/main/java/eu/dnetlib/openaire/usermanagement/utils/AuthorizationService.java index 2456767..c6fa420 100644 --- a/src/main/java/eu/dnetlib/openaire/usermanagement/utils/AuthorizationService.java +++ b/src/main/java/eu/dnetlib/openaire/usermanagement/utils/AuthorizationService.java @@ -1,7 +1,14 @@ package eu.dnetlib.openaire.usermanagement.utils; +import org.mitre.openid.connect.model.OIDCAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Component; +import java.util.ArrayList; +import java.util.List; + @Component("AuthorizationService") public class AuthorizationService { @@ -47,4 +54,30 @@ public class AuthorizationService { public boolean isCommunity(String type) { return mapType(type, false).equals("community"); } + + + public List getRoles() { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication != null) { + List authorities = (List) authentication.getAuthorities(); + if (authorities != null) { + List roles = new ArrayList<>(); + authorities.forEach((authority) -> { + roles.add(authority.getAuthority()); + }); + return roles; + } + } + return null; + } + + public String getAaiId() { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + return authentication instanceof OIDCAuthenticationToken ? ((OIDCAuthenticationToken)authentication).getSub() : null; + } + + public String getEmail() { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + return authentication instanceof OIDCAuthenticationToken ? ((OIDCAuthenticationToken)authentication).getUserInfo().getEmail() : null; + } }