diff --git a/pom.xml b/pom.xml
index 229a16f..aad1ae6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,6 +15,12 @@
1.8
+
+ https://code-repo.d4science.org/MaDgIK/dnet-role-management
+ scm:git:gitea@code-repo.d4science.org:MaDgIK/dnet-role-management.git
+ scm:git:gitea@code-repo.d4science.org:MaDgIK/dnet-role-management.git
+ dnet-role-management-1.0.0
+
@@ -95,6 +101,20 @@
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+ eu.dnetlib.dnetrolemanagement.DnetRoleManagementApplication
+
+
+
+
+ repackage
+
+
+
+
maven-war-plugin
2.6
diff --git a/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/HealthController.java b/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/HealthController.java
index 1668559..5f38610 100644
--- a/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/HealthController.java
+++ b/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/HealthController.java
@@ -1,17 +1,51 @@
package eu.dnetlib.dnetrolemanagement.controllers;
+import eu.dnetlib.dnetrolemanagement.config.properties.APIProperties;
+import eu.dnetlib.dnetrolemanagement.config.properties.RedisProperties;
+import eu.dnetlib.dnetrolemanagement.config.properties.RegistryProperties;
import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
+import java.util.HashMap;
+import java.util.Map;
+
@RestController
public class HealthController {
private final Logger log = Logger.getLogger(this.getClass());
+ private final APIProperties apiProperties;
+ private final RedisProperties redisProperties;
+ private final RegistryProperties registryProperties;
+
+ @Autowired
+ public HealthController(APIProperties apiProperties, RedisProperties redisProperties, RegistryProperties registryProperties) {
+ this.apiProperties = apiProperties;
+ this.redisProperties = redisProperties;
+ this.registryProperties = registryProperties;
+ }
@RequestMapping(value = {"", "/health_check"}, method = RequestMethod.GET)
public String hello() {
log.debug("Hello from role management!");
return "Hello from Role management!";
}
+
+ @PreAuthorize("hasAnyAuthority('PORTAL_ADMINISTRATOR')")
+ @RequestMapping(value = "/health_check/advanced", method = RequestMethod.GET)
+ public Map checkEverything() {
+ Map response = new HashMap<>();
+ response.put("api.title", apiProperties.getTitle());
+ response.put("api.description", apiProperties.getDescription());
+ response.put("api.version", apiProperties.getVersion());
+ response.put("registry.coid", registryProperties.getCoid());
+ response.put("registry.issuer", registryProperties.getIssuer());
+ response.put("registry.user", registryProperties.getUser());
+ response.put("registry.password", registryProperties.getPassword());
+ response.put("registry.version", registryProperties.getVersion());
+ response.put("redis.host", redisProperties.getHost());
+ return response;
+ }
}
diff --git a/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/SuperAdminController.java b/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/SuperAdminController.java
index 57d4afb..c370625 100644
--- a/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/SuperAdminController.java
+++ b/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/SuperAdminController.java
@@ -8,7 +8,6 @@ import eu.dnetlib.dnetrolemanagement.utils.AuthoritiesUpdater;
import eu.dnetlib.dnetrolemanagement.utils.AuthoritiesUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
-import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@@ -70,4 +69,26 @@ public class SuperAdminController {
}
throw new ResourceNotFoundException("User has not been found");
}
+
+ /**
+ * Remove portal admin role from logged in user or user with @email
+ */
+ @RequestMapping(value = "/remove", method = RequestMethod.DELETE)
+ public ResponseEntity removeRole( @RequestParam(required = false) String email) {
+ List coPersonIds = registryService.getCoPersonIdsByEmail(email);
+ if (coPersonIds.size() > 0) {
+ Integer couId = registryService.getCouId(AuthoritiesUtils.portalAdminRole());
+ if (couId != null) {
+ coPersonIds.forEach(coPersonId -> {
+ String identifier = registryService.getIdentifierByCoPersonId(coPersonId);
+ Integer role = registryService.getRoleId(coPersonId, couId);
+ registryService.removeMemberRole(coPersonId, couId, role);
+ authoritiesUpdater.removeRole(identifier, new SimpleGrantedAuthority(AuthoritiesUtils.portalAdminRole()));
+ });
+ return ResponseEntity.ok(new Response("Role has been revoked successfully"));
+ }
+ throw new ResourceNotFoundException("Role has not been found");
+ }
+ throw new ResourceNotFoundException("User has not been found");
+ }
}
diff --git a/src/main/java/eu/dnetlib/dnetrolemanagement/utils/HttpUtils.java b/src/main/java/eu/dnetlib/dnetrolemanagement/utils/HttpUtils.java
index 86a7520..58bc233 100644
--- a/src/main/java/eu/dnetlib/dnetrolemanagement/utils/HttpUtils.java
+++ b/src/main/java/eu/dnetlib/dnetrolemanagement/utils/HttpUtils.java
@@ -17,9 +17,9 @@ import java.util.Map;
@Component
public class HttpUtils {
- private static final Logger logger = Logger.getLogger(eu.dnetlib.dnetrolemanagement.utils.HttpUtils.class);
+ private static final Logger logger = Logger.getLogger(HttpUtils.class);
- private RegistryProperties registryProperties;
+ private final RegistryProperties registryProperties;
@Autowired
public HttpUtils(RegistryProperties registryProperties) {
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
deleted file mode 100644
index 8b13789..0000000
--- a/src/main/resources/application.properties
+++ /dev/null
@@ -1 +0,0 @@
-