From bd2807fbdffa97c659f11440c478c4112c85a33a Mon Sep 17 00:00:00 2001 From: sgiannopoulos Date: Tue, 17 Oct 2023 12:40:47 +0300 Subject: [PATCH] remove zenodo from user info --- .../main/java/eu/eudat/controllers/Users.java | 20 ------ .../model/models/PrincipalBuilder.java | 27 ------- .../eu/eudat/logic/managers/UserManager.java | 47 ++---------- .../Zenodo/ZenodoAccessType.java | 22 ------ .../Zenodo/ZenodoCustomProvider.java | 7 -- .../Zenodo/ZenodoCustomProviderImpl.java | 71 ------------------- .../customproviders/Zenodo/ZenodoUser.java | 59 --------------- .../zenodo/helpers/ZenodoRequest.java | 12 ---- .../zenodo/helpers/ZenodoResponseToken.java | 47 ------------ ...erifiedUserEmailAuthenticationService.java | 4 -- .../VerifiedUserAuthenticationService.java | 28 -------- .../eu/eudat/models/data/doi/DOIRequest.java | 25 ------- .../data/loginprovider/LoginProviderUser.java | 27 ------- .../models/data/principal/PrincipalModel.java | 10 --- .../eudat/models/data/security/Principal.java | 36 ---------- .../models/data/userinfo/UserProfile.java | 9 --- .../src/main/resources/config/security.yml | 11 +-- dmp-frontend/src/app/app-routing.module.ts | 8 --- .../src/app/core/model/auth/login-info.ts | 7 -- .../keycloak-configuration.model.ts | 1 - .../login-configuration.model.ts | 22 ------ .../src/app/core/model/user/user-listing.ts | 1 - .../core/model/zenodo/zenodo-token.model.ts | 7 -- .../configuration/configuration.service.ts | 6 -- .../app/core/services/user/user.service.ts | 10 --- .../src/app/ui/external/external.module.ts | 15 ---- .../src/app/ui/external/external.routing.ts | 31 -------- .../ui/external/zenodo/zenodo.component.html | 0 .../ui/external/zenodo/zenodo.component.scss | 0 .../ui/external/zenodo/zenodo.component.ts | 26 ------- .../user-profile/user-profile.component.html | 22 ------ .../ui/user-profile/user-profile.component.ts | 47 ------------ 32 files changed, 7 insertions(+), 658 deletions(-) delete mode 100644 dmp-backend/web/src/main/java/eu/eudat/logic/security/customproviders/Zenodo/ZenodoAccessType.java delete mode 100644 dmp-backend/web/src/main/java/eu/eudat/logic/security/customproviders/Zenodo/ZenodoCustomProvider.java delete mode 100644 dmp-backend/web/src/main/java/eu/eudat/logic/security/customproviders/Zenodo/ZenodoCustomProviderImpl.java delete mode 100644 dmp-backend/web/src/main/java/eu/eudat/logic/security/customproviders/Zenodo/ZenodoUser.java delete mode 100644 dmp-backend/web/src/main/java/eu/eudat/logic/security/validators/zenodo/helpers/ZenodoRequest.java delete mode 100644 dmp-backend/web/src/main/java/eu/eudat/logic/security/validators/zenodo/helpers/ZenodoResponseToken.java delete mode 100644 dmp-backend/web/src/main/java/eu/eudat/models/data/doi/DOIRequest.java delete mode 100644 dmp-frontend/src/app/core/model/auth/login-info.ts delete mode 100644 dmp-frontend/src/app/core/model/configuration-models/login-configuration.model.ts delete mode 100644 dmp-frontend/src/app/core/model/zenodo/zenodo-token.model.ts delete mode 100644 dmp-frontend/src/app/ui/external/external.module.ts delete mode 100644 dmp-frontend/src/app/ui/external/external.routing.ts delete mode 100644 dmp-frontend/src/app/ui/external/zenodo/zenodo.component.html delete mode 100644 dmp-frontend/src/app/ui/external/zenodo/zenodo.component.scss delete mode 100644 dmp-frontend/src/app/ui/external/zenodo/zenodo.component.ts diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/Users.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/Users.java index a715eaa6f..5d9f396d5 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/Users.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/Users.java @@ -1,13 +1,9 @@ package eu.eudat.controllers; import eu.eudat.data.query.items.table.userinfo.UserInfoTableRequestItem; -import eu.eudat.exceptions.security.ExpiredTokenException; -import eu.eudat.exceptions.security.NonValidTokenException; -import eu.eudat.exceptions.security.NullEmailException; import eu.eudat.logic.managers.UserManager; import eu.eudat.logic.security.claims.ClaimedAuthorities; import eu.eudat.logic.services.ApiContext; -import eu.eudat.models.data.doi.DOIRequest; import eu.eudat.models.data.helpers.common.DataTableData; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.models.data.security.Principal; @@ -87,22 +83,6 @@ public class Users extends BaseController { DataTableData dataTable = userManager.getCollaboratorsPaged(userInfoTableRequestItem, principal); return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().payload(dataTable).status(ApiMessageCode.NO_MESSAGE)); } - - @Transactional - @RequestMapping(method = RequestMethod.POST, value = {"/registerDOIToken"}, consumes = "application/json", produces = "application/json") - public @ResponseBody - ResponseEntity> registerDOIToken(@RequestBody DOIRequest doiRequest, Principal principal) throws NullEmailException, IOException { - userManager.registerDOIToken(doiRequest, principal); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE)); - } - - @Transactional - @RequestMapping(method = RequestMethod.DELETE, value = {"/deleteDOIToken"}, consumes = "application/json", produces = "application/json") - public @ResponseBody - ResponseEntity> deleteDOIToken(Principal principal) throws NullEmailException, IOException { - userManager.deleteDOIToken(principal); - return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE)); - } @RequestMapping(method = RequestMethod.GET, value = {"/getCsv"}) public @ResponseBody diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/builders/model/models/PrincipalBuilder.java b/dmp-backend/web/src/main/java/eu/eudat/logic/builders/model/models/PrincipalBuilder.java index bc5cce484..85b38c967 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/builders/model/models/PrincipalBuilder.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/builders/model/models/PrincipalBuilder.java @@ -24,10 +24,6 @@ public class PrincipalBuilder extends Builder { private String culture; private String language; private String timezone; - private String zenodoToken; - private Instant zenodoDuration; - private String zenodoEmail; - private String zenodoRefresh; public PrincipalBuilder id(UUID id) { this.id = id; @@ -79,25 +75,6 @@ public class PrincipalBuilder extends Builder { return this; } - public PrincipalBuilder zenodoToken(String zenodoToken) { - this.zenodoToken = zenodoToken; - return this; - } - - public PrincipalBuilder zenodoDuration(Instant zenodoDuration) { - this.zenodoDuration = zenodoDuration; - return this; - } - - public PrincipalBuilder zenodoEmail(String zenodoEmail) { - this.zenodoEmail = zenodoEmail; - return this; - } - - public PrincipalBuilder zenodoRefresh(String zenodoRefresh) { - this.zenodoRefresh = zenodoRefresh; - return this; - } @Override public Principal build() { @@ -112,10 +89,6 @@ public class PrincipalBuilder extends Builder { principal.setCulture(culture); principal.setLanguage(language); principal.setTimezone(timezone); - principal.setZenodoToken(zenodoToken); - principal.setZenodoDuration(zenodoDuration); - principal.setZenodoEmail(zenodoEmail); - principal.setZenodoRefresh(zenodoRefresh); return principal; } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/UserManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/UserManager.java index 387a1e2ae..54e009158 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/UserManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/UserManager.java @@ -4,31 +4,25 @@ import com.fasterxml.jackson.databind.ObjectMapper; import eu.eudat.data.CredentialEntity; import eu.eudat.data.dao.criteria.DataManagementPlanCriteria; import eu.eudat.data.dao.entities.UserInfoDao; -import eu.eudat.data.entities.*; +import eu.eudat.data.entities.DMP; +import eu.eudat.data.entities.DescriptionTemplate; +import eu.eudat.data.entities.UserInfo; +import eu.eudat.data.entities.UserRole; import eu.eudat.data.query.items.table.userinfo.UserInfoTableRequestItem; -import eu.eudat.exceptions.security.NullEmailException; import eu.eudat.exceptions.security.UnauthorisedException; import eu.eudat.logic.builders.entity.UserRoleBuilder; import eu.eudat.logic.builders.model.models.DataTableDataBuilder; -import eu.eudat.logic.security.customproviders.Zenodo.ZenodoAccessType; -import eu.eudat.logic.security.customproviders.Zenodo.ZenodoCustomProvider; -import eu.eudat.logic.security.validators.zenodo.helpers.ZenodoResponseToken; import eu.eudat.logic.services.ApiContext; -import eu.eudat.logic.services.operations.authentication.AuthenticationService; import eu.eudat.logic.utilities.builders.XmlBuilder; import eu.eudat.models.HintedModelFactory; import eu.eudat.models.data.dmp.DataManagementPlan; -import eu.eudat.models.data.doi.DOIRequest; import eu.eudat.models.data.helpers.common.DataTableData; -import eu.eudat.models.data.login.Credentials; -import eu.eudat.models.data.principal.PrincipalModel; import eu.eudat.models.data.security.Principal; import eu.eudat.models.data.userinfo.UserCredential; import eu.eudat.models.data.userinfo.UserListingModel; import eu.eudat.models.data.userinfo.UserProfile; import eu.eudat.queryable.QueryableList; import eu.eudat.types.Authorities; - import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,14 +36,8 @@ import org.springframework.stereotype.Component; import org.w3c.dom.Document; import org.w3c.dom.Element; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; +import java.io.*; import java.nio.file.Files; -import java.time.Instant; import java.util.*; import java.util.stream.Collectors; @@ -58,13 +46,11 @@ public class UserManager { private static final Logger logger = LoggerFactory.getLogger(UserManager.class); private ApiContext apiContext; - private ZenodoCustomProvider zenodoCustomProvider; private Environment environment; @Autowired - public UserManager(ApiContext apiContext, ZenodoCustomProvider zenodoCustomProvider, Environment environment) { + public UserManager(ApiContext apiContext, Environment environment) { this.apiContext = apiContext; - this.zenodoCustomProvider = zenodoCustomProvider; this.environment = environment; } @@ -148,27 +134,6 @@ public class UserManager { return dataTableData; } - public void registerDOIToken(DOIRequest doiRequest, Principal principal) throws IOException { //TODO: Authn - ZenodoResponseToken responseToken = this.zenodoCustomProvider.getAccessToken(ZenodoAccessType.AUTHORIZATION_CODE, - doiRequest.getZenodoRequest().getCode(), this.environment.getProperty("zenodo.login.client_id"), - this.environment.getProperty("zenodo.login.client_secret"), doiRequest.getRedirectUri()); - Map settings = new HashMap<>(); - settings.put("zenodoEmail", responseToken.getEmail()); - settings.put("zenodoRefresh", responseToken.getRefreshToken()); - settings.put("zenodoToken", responseToken.getAccessToken()); - settings.put("expirationDate", Instant.now().plusSeconds(responseToken.getExpiresIn()).toEpochMilli()); - this.updateSettings(settings, principal); - } - - public void deleteDOIToken(Principal principal) throws IOException { - Map settings = new HashMap<>(); - settings.put("zenodoEmail", ""); - settings.put("zenodoRefresh", ""); - settings.put("zenodoToken", ""); - settings.put("expirationDate", 0); - this.updateSettings(settings, principal); - } - public ResponseEntity exportToCsv(Principal principal) throws IOException { if (!principal.getAuthz().contains(Authorities.ADMIN)) throw new UnauthorisedException(); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/security/customproviders/Zenodo/ZenodoAccessType.java b/dmp-backend/web/src/main/java/eu/eudat/logic/security/customproviders/Zenodo/ZenodoAccessType.java deleted file mode 100644 index 79b077853..000000000 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/security/customproviders/Zenodo/ZenodoAccessType.java +++ /dev/null @@ -1,22 +0,0 @@ -package eu.eudat.logic.security.customproviders.Zenodo; - -public enum ZenodoAccessType { - AUTHORIZATION_CODE("authorization_code", "code"), - REFRESH_TOKEN("refresh_token", "refresh_token"); - - private final String grantType; - private final String property; - - ZenodoAccessType(String grantType, String property) { - this.grantType = grantType; - this.property = property; - } - - public String getGrantType() { - return grantType; - } - - public String getProperty() { - return property; - } -} diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/security/customproviders/Zenodo/ZenodoCustomProvider.java b/dmp-backend/web/src/main/java/eu/eudat/logic/security/customproviders/Zenodo/ZenodoCustomProvider.java deleted file mode 100644 index 0fd0e5cca..000000000 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/security/customproviders/Zenodo/ZenodoCustomProvider.java +++ /dev/null @@ -1,7 +0,0 @@ -package eu.eudat.logic.security.customproviders.Zenodo; - -import eu.eudat.logic.security.validators.zenodo.helpers.ZenodoResponseToken; - -public interface ZenodoCustomProvider { - ZenodoResponseToken getAccessToken(ZenodoAccessType accessType, String code, String clientId, String clientSecret, String redirectUri); -} diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/security/customproviders/Zenodo/ZenodoCustomProviderImpl.java b/dmp-backend/web/src/main/java/eu/eudat/logic/security/customproviders/Zenodo/ZenodoCustomProviderImpl.java deleted file mode 100644 index a3f440b81..000000000 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/security/customproviders/Zenodo/ZenodoCustomProviderImpl.java +++ /dev/null @@ -1,71 +0,0 @@ -package eu.eudat.logic.security.customproviders.Zenodo; - -import eu.eudat.logic.security.validators.zenodo.helpers.ZenodoResponseToken; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.env.Environment; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; -import org.springframework.stereotype.Component; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; -import org.springframework.web.client.HttpClientErrorException; -import org.springframework.web.client.RestTemplate; - -import java.io.IOException; -import java.util.Collections; -import java.util.Map; - -@Component("ZenodoCustomProvider") -public class ZenodoCustomProviderImpl implements ZenodoCustomProvider { - private static final Logger logger = LoggerFactory.getLogger(ZenodoCustomProviderImpl.class); - - private Environment environment; - - @Autowired - public ZenodoCustomProviderImpl(Environment environment) { - this.environment = environment; - } - - @Override - public ZenodoResponseToken getAccessToken(ZenodoAccessType accessType, String code, String clientId, String clientSecret, String redirectUri) { - RestTemplate restTemplate = new RestTemplate(); - HttpHeaders headers = new HttpHeaders(); - headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); - headers.setContentType(MediaType.MULTIPART_FORM_DATA); - - MultiValueMap map = new LinkedMultiValueMap<>(); - map.add("client_id", clientId); - map.add("client_secret", clientSecret); - map.add("grant_type", accessType.getGrantType()); - map.add(accessType.getProperty(), code); - map.add("redirect_uri", redirectUri); - HttpEntity> request = new HttpEntity<>(map, headers); - - try { - Map values = restTemplate.postForObject(this.environment.getProperty("zenodo.login.access_token_url"), request, Map.class); - ZenodoResponseToken zenodoResponseToken = new ZenodoResponseToken(); - Map user = (Map) values.get("user"); - zenodoResponseToken.setUserId((String) user.get("id")); - zenodoResponseToken.setEmail((String) user.get("email")); - zenodoResponseToken.setExpiresIn((Integer) values.get("expires_in")); - zenodoResponseToken.setAccessToken((String) values.get("access_token")); - zenodoResponseToken.setRefreshToken((String) values.get("refresh_token")); - - return zenodoResponseToken; - } catch (HttpClientErrorException ex) { - logger.error(ex.getResponseBodyAsString(), ex); - } - - return null; - } - - private HttpHeaders createBearerAuthHeaders(String accessToken) { - return new HttpHeaders() {{ - String authHeader = "Bearer " + accessToken; - set("Authorization", authHeader); - }}; - } -} diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/security/customproviders/Zenodo/ZenodoUser.java b/dmp-backend/web/src/main/java/eu/eudat/logic/security/customproviders/Zenodo/ZenodoUser.java deleted file mode 100644 index 92480c202..000000000 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/security/customproviders/Zenodo/ZenodoUser.java +++ /dev/null @@ -1,59 +0,0 @@ -package eu.eudat.logic.security.customproviders.Zenodo; - -import java.util.Map; - -public class ZenodoUser { - private String userId; - private String email; - private String accessToken; - private Integer expiresIn; - private String refreshToken; - - public String getUserId() { - return userId; - } - - public void setUserId(String userId) { - this.userId = userId; - } - - public String getEmail() { - return email; - } - public void setEmail(String email) { - this.email = email; - } - - public String getAccessToken() { - return accessToken; - } - - public void setAccessToken(String accessToken) { - this.accessToken = accessToken; - } - - public Integer getExpiresIn() { - return expiresIn; - } - - public void setExpiresIn(Integer expiresIn) { - this.expiresIn = expiresIn; - } - - public String getRefreshToken() { - return refreshToken; - } - - public void setRefreshToken(String refreshToken) { - this.refreshToken = refreshToken; - } - - public ZenodoUser getZenodoUser(Object data) { - this.userId = (String) ((Map) data).get("userId"); - this.email = (String) ((Map) data).get("email"); - this.accessToken = (String) ((Map) data).get("accessToken"); - this.expiresIn = (Integer) ((Map) data).get("expiresIn"); - this.refreshToken = (String) ((Map) data).get("refreshToken"); - return this; - } -} diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/security/validators/zenodo/helpers/ZenodoRequest.java b/dmp-backend/web/src/main/java/eu/eudat/logic/security/validators/zenodo/helpers/ZenodoRequest.java deleted file mode 100644 index c1f4ea32a..000000000 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/security/validators/zenodo/helpers/ZenodoRequest.java +++ /dev/null @@ -1,12 +0,0 @@ -package eu.eudat.logic.security.validators.zenodo.helpers; - -public class ZenodoRequest { - private String code; - - public String getCode() { - return code; - } - public void setCode(String code) { - this.code = code; - } -} diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/security/validators/zenodo/helpers/ZenodoResponseToken.java b/dmp-backend/web/src/main/java/eu/eudat/logic/security/validators/zenodo/helpers/ZenodoResponseToken.java deleted file mode 100644 index 6c8783acf..000000000 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/security/validators/zenodo/helpers/ZenodoResponseToken.java +++ /dev/null @@ -1,47 +0,0 @@ -package eu.eudat.logic.security.validators.zenodo.helpers; - -public class ZenodoResponseToken { - private String userId; - private String email; - private Integer expiresIn; - private String accessToken; - private String refreshToken; - - public String getUserId() { - return userId; - } - public void setUserId(String userId) { - this.userId = userId; - } - - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } - - public Integer getExpiresIn() { - return expiresIn; - } - - public void setExpiresIn(Integer expiresIn) { - this.expiresIn = expiresIn; - } - - public String getAccessToken() { - return accessToken; - } - public void setAccessToken(String accessToken) { - this.accessToken = accessToken; - } - - public String getRefreshToken() { - return refreshToken; - } - - public void setRefreshToken(String refreshToken) { - this.refreshToken = refreshToken; - } -} diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/authentication/NonVerifiedUserEmailAuthenticationService.java b/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/authentication/NonVerifiedUserEmailAuthenticationService.java index 111e91649..12a341fb4 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/authentication/NonVerifiedUserEmailAuthenticationService.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/authentication/NonVerifiedUserEmailAuthenticationService.java @@ -49,10 +49,6 @@ public class NonVerifiedUserEmailAuthenticationService extends AbstractAuthentic .culture("") .language("") .timezone("") - .zenodoToken("") - .zenodoDuration(Instant.now()) - .zenodoEmail("") - .zenodoRefresh("") .build(); principalItem.setAuthorities(new HashSet<>()); principalItem.getAuthz().add(Authorities.USER); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/authentication/VerifiedUserAuthenticationService.java b/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/authentication/VerifiedUserAuthenticationService.java index 6771d50f5..36e399ae6 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/authentication/VerifiedUserAuthenticationService.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/services/operations/authentication/VerifiedUserAuthenticationService.java @@ -38,30 +38,6 @@ public class VerifiedUserAuthenticationService extends AbstractAuthenticationSer } catch (Exception e) { avatarUrl = ""; } - String zenodoToken; - try { - zenodoToken = user.getAdditionalinfo() != null ? new ObjectMapper().readTree(user.getAdditionalinfo()).get("zenodoToken").asText() : ""; - } catch (Exception e) { - zenodoToken = ""; - } - Instant zenodoDuration; - try { - zenodoDuration = user.getAdditionalinfo() != null ? Instant.ofEpochMilli(new ObjectMapper().readTree(user.getAdditionalinfo()).get("expirationDate").asLong()) : Instant.now(); - } catch (Exception e) { - zenodoDuration = Instant.now(); - } - String zenodoEmail; - try { - zenodoEmail = user.getAdditionalinfo() != null ? new ObjectMapper().readTree(user.getAdditionalinfo()).get("zenodoEmail").asText() : ""; - } catch (Exception e) { - zenodoEmail = ""; - } - String zenodoRefresh; - try { - zenodoRefresh = user.getAdditionalinfo() != null ? new ObjectMapper().readTree(user.getAdditionalinfo()).get("zenodoRefresh").asText() : ""; - } catch (Exception e) { - zenodoRefresh = ""; - } String culture; try { culture = user.getAdditionalinfo() != null ? new ObjectMapper().readTree(user.getAdditionalinfo()).get("culture").get("name").asText() : ""; @@ -89,10 +65,6 @@ public class VerifiedUserAuthenticationService extends AbstractAuthenticationSer .culture(culture) .language(language) .timezone(timezone) - .zenodoToken(zenodoToken) - .zenodoDuration(zenodoDuration) - .zenodoEmail(zenodoEmail) - .zenodoRefresh(zenodoRefresh) .build(); List userRoles = apiContext.getOperationsContext().getDatabaseRepository().getUserRoleDao().getUserRoles(user); diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/doi/DOIRequest.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/doi/DOIRequest.java deleted file mode 100644 index 8338a75ac..000000000 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/doi/DOIRequest.java +++ /dev/null @@ -1,25 +0,0 @@ -package eu.eudat.models.data.doi; - -import eu.eudat.logic.security.validators.zenodo.helpers.ZenodoRequest; - -public class DOIRequest { - - private ZenodoRequest zenodoRequest; - private String redirectUri; - - public ZenodoRequest getZenodoRequest() { - return zenodoRequest; - } - - public void setZenodoRequest(ZenodoRequest zenodoRequest) { - this.zenodoRequest = zenodoRequest; - } - - public String getRedirectUri() { - return redirectUri; - } - - public void setRedirectUri(String redirectUri) { - this.redirectUri = redirectUri; - } -} diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/loginprovider/LoginProviderUser.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/loginprovider/LoginProviderUser.java index 15ed1bda1..08e8303e4 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/loginprovider/LoginProviderUser.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/loginprovider/LoginProviderUser.java @@ -8,9 +8,6 @@ public class LoginProviderUser { private String secret; private String avatarUrl; private boolean isVerified; - private String zenodoId; - private Integer zenodoExpire; - private String zenodoRefresh; public String getId() { return id; @@ -59,28 +56,4 @@ public class LoginProviderUser { public void setAvatarUrl(String avatarUrl) { this.avatarUrl = avatarUrl; } - - public String getZenodoId() { - return zenodoId; - } - - public void setZenodoId(String zenodoId) { - this.zenodoId = zenodoId; - } - - public Integer getZenodoExpire() { - return zenodoExpire; - } - - public void setZenodoExpire(Integer zenodoExpire) { - this.zenodoExpire = zenodoExpire; - } - - public String getZenodoRefresh() { - return zenodoRefresh; - } - - public void setZenodoRefresh(String zenodoRefresh) { - this.zenodoRefresh = zenodoRefresh; - } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/principal/PrincipalModel.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/principal/PrincipalModel.java index e5604dfb3..113a3b7e4 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/principal/PrincipalModel.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/principal/PrincipalModel.java @@ -19,7 +19,6 @@ public class PrincipalModel { private String culture; private String language; private String timezone; - private String zenodoEmail; public UUID getId() { return id; @@ -105,14 +104,6 @@ public class PrincipalModel { this.timezone = timezone; } - public String getZenodoEmail() { - return zenodoEmail; - } - - public void setZenodoEmail(String zenodoEmail) { - this.zenodoEmail = zenodoEmail; - } - public static PrincipalModel fromEntity(Principal principal) { PrincipalModel model = new PrincipalModel(); model.setId(principal.getId()); @@ -125,7 +116,6 @@ public class PrincipalModel { model.setLanguage(principal.getLanguage()); model.setName(principal.getName()); model.setTimezone(principal.getTimezone()); - model.setZenodoEmail(principal.getZenodoEmail()); return model; } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/security/Principal.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/security/Principal.java index b7231ca78..70c9cad0c 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/security/Principal.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/security/Principal.java @@ -19,10 +19,6 @@ public class Principal { private String culture; private String language; private String timezone; - private String zenodoToken; - private Instant zenodoDuration; - private String zenodoRefresh; - private String zenodoEmail; public UUID getId() { return id; @@ -100,38 +96,6 @@ public class Principal { this.timezone = timezone; } - public String getZenodoToken() { - return zenodoToken; - } - - public void setZenodoToken(String zenodoToken) { - this.zenodoToken = zenodoToken; - } - - public Instant getZenodoDuration() { - return zenodoDuration; - } - - public void setZenodoDuration(Instant zenodoDuration) { - this.zenodoDuration = zenodoDuration; - } - - public String getZenodoRefresh() { - return zenodoRefresh; - } - - public void setZenodoRefresh(String zenodoRefresh) { - this.zenodoRefresh = zenodoRefresh; - } - - public String getZenodoEmail() { - return zenodoEmail; - } - - public void setZenodoEmail(String zenodoEmail) { - this.zenodoEmail = zenodoEmail; - } - @JsonIgnore public Set getAuthz() { return this.authorities; diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/userinfo/UserProfile.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/userinfo/UserProfile.java index 28bea2de8..c6f04af26 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/userinfo/UserProfile.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/userinfo/UserProfile.java @@ -28,7 +28,6 @@ public class UserProfile implements DataModel associatedDmps; - private String zenodoEmail; private Map language; private String timezone; private Map culture; @@ -92,13 +91,6 @@ public class UserProfile implements DataModel getLanguage() { return language; @@ -163,7 +155,6 @@ public class UserProfile implements DataModel) additionalInfo.get("organization")); this.roleOrganization = (String) additionalInfo.get("roleOrganization"); diff --git a/dmp-backend/web/src/main/resources/config/security.yml b/dmp-backend/web/src/main/resources/config/security.yml index 05be0b203..fc814c498 100644 --- a/dmp-backend/web/src/main/resources/config/security.yml +++ b/dmp-backend/web/src/main/resources/config/security.yml @@ -17,13 +17,4 @@ web: client-secret: ${IDP_OPAQUE_CLIENT_SECRET:} jwt: claims: [ role, x-role ] - issuer-uri: ${IDP_ISSUER_URI:} - -zenodo: - affiliation: ARGOS - community: argos - login: - access_token_url: ${ZENODO_ACCESS_TOKEN_URL:} - client_id: ${ZENODO_CLIENT_ID:} - client_secret: ${ZENODO_CLIENT_SECRET:} - redirect_uri: http://localhost:4200/login/external/zenodo \ No newline at end of file + issuer-uri: ${IDP_ISSUER_URI:} \ No newline at end of file diff --git a/dmp-frontend/src/app/app-routing.module.ts b/dmp-frontend/src/app/app-routing.module.ts index 392d3b73c..c5918c5ab 100644 --- a/dmp-frontend/src/app/app-routing.module.ts +++ b/dmp-frontend/src/app/app-routing.module.ts @@ -248,14 +248,6 @@ const appRoutes: Routes = [ { path: 'logout', loadChildren: () => import('./ui/auth/logout/logout.module').then(m => m.LogoutModule) }, { path: 'reload', component: ReloadHelperComponent }, { path: 'oauth2', component: Oauth2DialogComponent }, - { - path: 'external', - loadChildren: () => import('./ui/external/external.module').then(m => m.ExternalModule), - data: { - breadcrumb: true, - - }, - } ]; @NgModule({ diff --git a/dmp-frontend/src/app/core/model/auth/login-info.ts b/dmp-frontend/src/app/core/model/auth/login-info.ts deleted file mode 100644 index 6c6aa497a..000000000 --- a/dmp-frontend/src/app/core/model/auth/login-info.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { AuthProvider } from "../../common/enum/auth-provider"; - -export interface LoginInfo { - ticket: string; - provider: AuthProvider; - data?: any; -} \ No newline at end of file diff --git a/dmp-frontend/src/app/core/model/configuration-models/keycloak-configuration.model.ts b/dmp-frontend/src/app/core/model/configuration-models/keycloak-configuration.model.ts index ff4a84d92..bb40cb15d 100644 --- a/dmp-frontend/src/app/core/model/configuration-models/keycloak-configuration.model.ts +++ b/dmp-frontend/src/app/core/model/configuration-models/keycloak-configuration.model.ts @@ -1,5 +1,4 @@ import { KeycloakFlow } from 'keycloak-js'; -import { LoginConfiguration } from './login-configuration.model'; export class KeycloakConfiguration { diff --git a/dmp-frontend/src/app/core/model/configuration-models/login-configuration.model.ts b/dmp-frontend/src/app/core/model/configuration-models/login-configuration.model.ts deleted file mode 100644 index 18f467e99..000000000 --- a/dmp-frontend/src/app/core/model/configuration-models/login-configuration.model.ts +++ /dev/null @@ -1,22 +0,0 @@ -export class LoginConfiguration { - - private _clientId: string; - get clientId(): string { - return this._clientId; - } - - private _oauthUrl: string; - get oauthUrl(): string { - return this._oauthUrl; - } - - private _redirectUri: string; - get redirectUri(): string { - return this._redirectUri; - } - - private _state: string; - get state(): string { - return this._state; - } -} diff --git a/dmp-frontend/src/app/core/model/user/user-listing.ts b/dmp-frontend/src/app/core/model/user/user-listing.ts index 89e792cff..3c79e8664 100644 --- a/dmp-frontend/src/app/core/model/user/user-listing.ts +++ b/dmp-frontend/src/app/core/model/user/user-listing.ts @@ -11,7 +11,6 @@ export interface UserListingModel { language: any; culture: any; timezone: String; - zenodoEmail: String; avatarUrl: String; organization: OrganizationModel; roleOrganization: RoleOrganizationType; diff --git a/dmp-frontend/src/app/core/model/zenodo/zenodo-token.model.ts b/dmp-frontend/src/app/core/model/zenodo/zenodo-token.model.ts deleted file mode 100644 index a1428496f..000000000 --- a/dmp-frontend/src/app/core/model/zenodo/zenodo-token.model.ts +++ /dev/null @@ -1,7 +0,0 @@ -export class ZenodoToken { - userId: string; - expiresIn: number; - accessToken:string; - email: string; - refreshToken: string; -} diff --git a/dmp-frontend/src/app/core/services/configuration/configuration.service.ts b/dmp-frontend/src/app/core/services/configuration/configuration.service.ts index 55c684f56..27e951622 100644 --- a/dmp-frontend/src/app/core/services/configuration/configuration.service.ts +++ b/dmp-frontend/src/app/core/services/configuration/configuration.service.ts @@ -8,7 +8,6 @@ import { HelpService } from '@app/core/model/configuration-models/help-service.m import { Logging } from '@app/core/model/configuration-models/logging.model'; import { HttpClient } from '@angular/common/http'; import { KeycloakConfiguration } from '@app/core/model/configuration-models/keycloak-configuration.model'; -import { LoginConfiguration } from '@app/core/model/configuration-models/login-configuration.model'; @Injectable({ providedIn: 'root', @@ -137,10 +136,6 @@ export class ConfigurationService extends BaseComponent { }); } - private _zenodoConfiguration: LoginConfiguration; - get zenodoConfiguration(): LoginConfiguration { - return this._zenodoConfiguration; - } private parseResponse(config: any) { @@ -150,7 +145,6 @@ export class ConfigurationService extends BaseComponent { this._defaultCulture = config.defaultCulture; this._defaultLanguage = config.defaultLanguage; this._availableLanguages = config.availableLanguages; - this._zenodoConfiguration = config.zenodoConfiguration; this._keycloak = KeycloakConfiguration.parseValue(config.keycloak); this._logging = Logging.parseValue(config.logging); this._lockInterval = config.lockInterval; diff --git a/dmp-frontend/src/app/core/services/user/user.service.ts b/dmp-frontend/src/app/core/services/user/user.service.ts index b190322da..e91c75ce3 100644 --- a/dmp-frontend/src/app/core/services/user/user.service.ts +++ b/dmp-frontend/src/app/core/services/user/user.service.ts @@ -57,16 +57,6 @@ export class UserService { return this.http.post(this.actionUrl + 'find', email, {headers: this.headers}); } - public registerDOIToken(code: string, redirectUri: string): Observable { - const url = this.actionUrl + 'registerDOIToken'; - return this.http.post(url, {zenodoRequest: {code: code}, redirectUri: redirectUri}, { headers: this.headers }); - } - - public deleteDOIToken(): Observable { - const url = this.actionUrl + 'deleteDOIToken'; - return this.http.delete(url, { headers: this.headers }); - } - downloadCSV(): Observable> { let headerCsv: HttpHeaders = this.headers.set('Content-Type', 'application/csv') return this.httpClient.get(this.actionUrl + 'getCsv/', { responseType: 'blob', observe: 'response', headers: headerCsv }); diff --git a/dmp-frontend/src/app/ui/external/external.module.ts b/dmp-frontend/src/app/ui/external/external.module.ts deleted file mode 100644 index a9f47fb22..000000000 --- a/dmp-frontend/src/app/ui/external/external.module.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { ZenodoComponent } from './zenodo/zenodo.component'; -import { ExternalRoutingModule } from './external.routing'; - - - -@NgModule({ - declarations: [ZenodoComponent], - imports: [ - CommonModule, - ExternalRoutingModule - ] -}) -export class ExternalModule { } diff --git a/dmp-frontend/src/app/ui/external/external.routing.ts b/dmp-frontend/src/app/ui/external/external.routing.ts deleted file mode 100644 index 36f598b4b..000000000 --- a/dmp-frontend/src/app/ui/external/external.routing.ts +++ /dev/null @@ -1,31 +0,0 @@ - -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; -import { ZenodoComponent } from './zenodo/zenodo.component'; - - - -const routes: Routes = [ - { - path: '', - component: ZenodoComponent, - data: { - breadcrumb: true - }, - }, - { - path: 'zenodo/:id', - component: ZenodoComponent, - data: { - breadcrumb: true - }, - },]; - - - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) - -export class ExternalRoutingModule { } diff --git a/dmp-frontend/src/app/ui/external/zenodo/zenodo.component.html b/dmp-frontend/src/app/ui/external/zenodo/zenodo.component.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/dmp-frontend/src/app/ui/external/zenodo/zenodo.component.scss b/dmp-frontend/src/app/ui/external/zenodo/zenodo.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/dmp-frontend/src/app/ui/external/zenodo/zenodo.component.ts b/dmp-frontend/src/app/ui/external/zenodo/zenodo.component.ts deleted file mode 100644 index bf9d18321..000000000 --- a/dmp-frontend/src/app/ui/external/zenodo/zenodo.component.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { ActivatedRoute, Router, Params } from '@angular/router'; -import { BaseComponent } from '@common/base/base.component'; -import { takeUntil } from 'rxjs/operators'; - -@Component({ - selector: 'app-zenodo', - templateUrl: './zenodo.component.html', - styleUrls: ['./zenodo.component.scss'] -}) -export class ZenodoComponent extends BaseComponent implements OnInit { - - constructor( - private route: ActivatedRoute, - private router: Router, ) { - super(); - } - - ngOnInit() { - this.route.paramMap.pipe(takeUntil(this._destroyed)).subscribe((params: Params) => { - const id = params.params.id; - this.router.navigate([`/explore-plans/publicOverview/${id}`]); - }); - } - -} diff --git a/dmp-frontend/src/app/ui/user-profile/user-profile.component.html b/dmp-frontend/src/app/ui/user-profile/user-profile.component.html index 45d1e982f..81472e5dd 100644 --- a/dmp-frontend/src/app/ui/user-profile/user-profile.component.html +++ b/dmp-frontend/src/app/ui/user-profile/user-profile.component.html @@ -184,28 +184,6 @@ - -
-
-
-
{{ 'USER-PROFILE.ZENODO.TITLE' | translate}}
-
-
-
- - - {{'USER-PROFILE.ZENODO.DESCRIPTION' | translate}} - -
-
-
-
- -
-
-
diff --git a/dmp-frontend/src/app/ui/user-profile/user-profile.component.ts b/dmp-frontend/src/app/ui/user-profile/user-profile.component.ts index ac8707365..7ae044196 100644 --- a/dmp-frontend/src/app/ui/user-profile/user-profile.component.ts +++ b/dmp-frontend/src/app/ui/user-profile/user-profile.component.ts @@ -13,8 +13,6 @@ import * as moment from 'moment-timezone'; import { Observable, of } from 'rxjs'; import { map, takeUntil } from 'rxjs/operators'; import { LanguageService } from '@app/core/services/language/language.service'; -import { isNullOrUndefined } from '@app/utilities/enhancers/utils'; -import { Oauth2DialogService } from '../misc/oauth2-dialog/service/oauth2-dialog.service'; import { ConfigurationService } from '@app/core/services/configuration/configuration.service'; import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration'; import { ExternalSourceItemModel } from '@app/core/model/external-sources/external-source-item'; @@ -51,8 +49,6 @@ export class UserProfileComponent extends BaseComponent implements OnInit, OnDes timezones: Observable; editMode = false; languages = []; - zenodoToken: string; - zenodoEmail: String; roleOrganizationEnum = RoleOrganizationType; authProviderEnum = AuthProvider; private oauthLock: boolean; @@ -80,7 +76,6 @@ export class UserProfileComponent extends BaseComponent implements OnInit, OnDes private authentication: AuthService, private languageService: LanguageService, private configurationService: ConfigurationService, - private oauth2DialogService: Oauth2DialogService, private uiNotificationService: UiNotificationService, private dialog: MatDialog, public enumUtils: EnumUtils, @@ -102,8 +97,6 @@ export class UserProfileComponent extends BaseComponent implements OnInit, OnDes const userId = !params['id'] ? 'me' : params['id']; this.user = this.userService.getUser(userId).pipe(map(result => { //result['additionalinfo'] = JSON.parse(result['additionalinfo']); - //this.zenodoToken = result['additionalinfo']['zenodoToken']; - this.zenodoEmail = result['zenodoEmail']; this.userProfileEditorModel = new UserProfileEditorModel().fromModel(result); this.formGroup = this.userProfileEditorModel.buildForm(this.configurationService.availableLanguages); @@ -258,46 +251,6 @@ export class UserProfileComponent extends BaseComponent implements OnInit, OnDes (ev.target as HTMLImageElement).src = 'assets/images/profile-placeholder.png'; } - public hasZenodo(): boolean { - return !isNullOrUndefined(this.zenodoEmail) && this.zenodoEmail !== ""; - } - - public loginToZenodo() { - this.showOauth2Dialog(this.getAccessUrl()); - } - - getAccessUrl(): string { - const redirectUri = this.configurationService.app + 'oauth2'; - const url = this.configurationService.zenodoConfiguration.oauthUrl - + '?client_id=' + this.configurationService.zenodoConfiguration.clientId - + '&response_type=code&scope=deposit:write+deposit:actions+user:email&state=astate&redirect_uri=' - + redirectUri; - return url; - } - - showOauth2Dialog(url: string) { - this.oauth2DialogService.login(url) - .pipe(takeUntil(this._destroyed)) - .subscribe(result => { - if (result !== undefined) { - if (result.oauthCode !== undefined && result.oauthCode !== null && !this.oauthLock) { - this.userService.registerDOIToken(result.oauthCode, this.configurationService.app + 'oauth2') - .pipe(takeUntil(this._destroyed)) - .subscribe(() => this.router.navigate(['/reload']).then(() => this.router.navigate(['/profile']))); - this.oauthLock = true; - } - } else { - this.oauthLock = false; - } - }); - } - - public RemoveZenodo() { - this.userService.deleteDOIToken() - .pipe(takeUntil(this._destroyed)) - .subscribe(() => this.router.navigate(['/reload']).then(() => this.router.navigate(['/profile']))); - } - public removeAccount(userCredential :UserCredentialModel) { this.dialog.open(ConfirmationDialogComponent, { data:{