diff --git a/src/main/java/org/gcube/common/authorization/utils/secret/GCubeSecret.java b/src/main/java/org/gcube/common/authorization/utils/secret/GCubeSecret.java index 64ae7d5..1e6caf0 100644 --- a/src/main/java/org/gcube/common/authorization/utils/secret/GCubeSecret.java +++ b/src/main/java/org/gcube/common/authorization/utils/secret/GCubeSecret.java @@ -1,16 +1,19 @@ package org.gcube.common.authorization.utils.secret; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.regex.Pattern; import org.gcube.common.authorization.client.Constants; import org.gcube.common.authorization.library.AuthorizationEntry; +import org.gcube.common.authorization.library.ClientType; import org.gcube.common.authorization.library.exception.AuthorizationException; import org.gcube.common.authorization.library.provider.ClientInfo; import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.common.authorization.library.utils.Caller; import org.gcube.common.authorization.utils.socialservice.SocialService; +import org.gcube.common.authorization.utils.user.GCubeUser; import org.gcube.common.authorization.utils.user.User; /** @@ -89,7 +92,23 @@ public class GCubeSecret extends Secret { public User getUser() { if(user==null) { try { - user = SocialService.getSocialService().getUser(this); + ClientInfo clientInfo = getClientInfo(); + ClientType clientType = clientInfo.getType(); + + switch (clientType) { + case USER: + user = SocialService.getSocialService().getUser(this); + break; + + default: + // The client is not an user. Trying to do the best + GCubeUser gCubeUser = new GCubeUser(); + gCubeUser.setRoles(new HashSet<>(clientInfo.getRoles())); + gCubeUser.setUsername(clientInfo.getId()); + user = gCubeUser; + break; + } + } catch (Exception e) { throw new RuntimeException(); } diff --git a/src/main/java/org/gcube/common/authorization/utils/user/GCubeUser.java b/src/main/java/org/gcube/common/authorization/utils/user/GCubeUser.java index e217f57..e5f9fa8 100644 --- a/src/main/java/org/gcube/common/authorization/utils/user/GCubeUser.java +++ b/src/main/java/org/gcube/common/authorization/utils/user/GCubeUser.java @@ -23,6 +23,14 @@ public class GCubeUser implements User { public GCubeUser() { this.additionalProperties = new HashMap<>(); + + // This info are not always present. Setting an empty string to avoid null + this.givenName = ""; + this.familyName = ""; + this.eMail = ""; + this.jobTitle = ""; + this.picture = ""; + this.middleName = ""; } @JsonProperty("id") @@ -49,11 +57,18 @@ public class GCubeUser implements User { return username; } + public void setUsername(String username) { + this.username = username; + } + @Override public Collection getRoles() { return roles; } + public void setRoles(Set roles) { + this.roles = roles; + } @Override public String getGivenName() { return givenName;