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 @@ -