From 434034b4f57d0c483f20d56b5090cf6c1e42bae6 Mon Sep 17 00:00:00 2001 From: "k.triantafyllou" Date: Wed, 5 Apr 2023 17:16:23 +0300 Subject: [PATCH 1/3] Add super admin role in super admin assign role method. --- .../controllers/SuperAdminController.java | 10 ++++++---- .../dnetrolemanagement/utils/AuthoritiesUtils.java | 5 +++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/SuperAdminController.java b/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/SuperAdminController.java index bd3e84c..9ec988b 100644 --- a/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/SuperAdminController.java +++ b/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/SuperAdminController.java @@ -54,10 +54,11 @@ public class SuperAdminController { * */ @RequestMapping(value = "/assign", method = RequestMethod.POST) - public ResponseEntity assignRole(@RequestParam(required = false) String email) { + public ResponseEntity assignRole(@RequestParam(required = false) String email, + @RequestParam(required = false, defaultValue = "false") boolean superAdmin) { List coPersonIds = registryService.getCoPersonIdsByEmail(email); if (coPersonIds.size() > 0) { - Integer couId = registryService.getCouId(AuthoritiesUtils.portalAdminRole()); + Integer couId = registryService.getCouId(superAdmin?AuthoritiesUtils.superAdminRole():AuthoritiesUtils.portalAdminRole()); if (couId != null) { coPersonIds.forEach(coPersonId -> { String identifier = registryService.getIdentifierByCoPersonId(coPersonId); @@ -75,10 +76,11 @@ public class SuperAdminController { * 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) { + public ResponseEntity removeRole( @RequestParam(required = false) String email, + @RequestParam(required = false, defaultValue = "false") boolean superAdmin) { List coPersonIds = registryService.getCoPersonIdsByEmail(email); if (coPersonIds.size() > 0) { - Integer couId = registryService.getCouId(AuthoritiesUtils.portalAdminRole()); + Integer couId = registryService.getCouId(superAdmin?AuthoritiesUtils.superAdminRole():AuthoritiesUtils.portalAdminRole()); if (couId != null) { coPersonIds.forEach(coPersonId -> { String identifier = registryService.getIdentifierByCoPersonId(coPersonId); diff --git a/src/main/java/eu/dnetlib/dnetrolemanagement/utils/AuthoritiesUtils.java b/src/main/java/eu/dnetlib/dnetrolemanagement/utils/AuthoritiesUtils.java index bc61874..2c4ea39 100644 --- a/src/main/java/eu/dnetlib/dnetrolemanagement/utils/AuthoritiesUtils.java +++ b/src/main/java/eu/dnetlib/dnetrolemanagement/utils/AuthoritiesUtils.java @@ -7,6 +7,11 @@ import org.springframework.security.core.context.SecurityContextHolder; public class AuthoritiesUtils { public static String PORTAL_ADMIN = "PORTAL_ADMINISTRATOR"; + public static String SUPER_ADMIN = "SUPER_ADMINISTRATOR"; + + public static String superAdminRole() { + return "Super Administrator"; + } public static String portalAdminRole() { return "Portal Administrator"; From f06f44ccaf8961a6f5f791437844d9633bf766da Mon Sep 17 00:00:00 2001 From: "k.triantafyllou" Date: Fri, 5 May 2023 15:28:16 +0300 Subject: [PATCH 2/3] Fix getRoleId to chech if status is Active or GracePeriod in order to identify that the role is active. --- .../eu/dnetlib/dnetrolemanagement/services/RegistryService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/eu/dnetlib/dnetrolemanagement/services/RegistryService.java b/src/main/java/eu/dnetlib/dnetrolemanagement/services/RegistryService.java index 31d9389..4f429f7 100644 --- a/src/main/java/eu/dnetlib/dnetrolemanagement/services/RegistryService.java +++ b/src/main/java/eu/dnetlib/dnetrolemanagement/services/RegistryService.java @@ -143,7 +143,7 @@ public class RegistryService { JsonArray roles = getRoles(coPersonId); for (JsonElement role : roles) { JsonObject object = role.getAsJsonObject(); - if (object.get("CouId").getAsInt() == couId && !object.get("Status").getAsString().equals("Deleted")) { + if (object.get("CouId").getAsInt() == couId && (object.get("Status").getAsString().equals("Active") || object.get("Status").getAsString().equals("GracePeriod"))) { return object.get("Id").getAsInt(); } } From 696049ee0558c869b44b9cacfe972ad85c6fba62 Mon Sep 17 00:00:00 2001 From: "k.triantafyllou" Date: Fri, 15 Dec 2023 16:53:13 +0200 Subject: [PATCH 3/3] Fix path variables for type to accept '.' in all cases --- .../controllers/AdminController.java | 6 +++--- .../controllers/CuratorController.java | 9 +++++---- .../controllers/MemberController.java | 10 +++++----- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/AdminController.java b/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/AdminController.java index f02f01f..8f9707b 100644 --- a/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/AdminController.java +++ b/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/AdminController.java @@ -36,7 +36,7 @@ public class AdminController { /** * Get the user info of the managers of a type(Community, etc.) with id(ee, egi, etc.) */ - @RequestMapping(value = "/{type}/{id}", method = RequestMethod.GET) + @RequestMapping(value = "/{type:.+}/{id}", method = RequestMethod.GET) public ResponseEntity getAll(@PathVariable("type") String type, @PathVariable("id") String id, @RequestParam(value = "email", required = false, defaultValue = "true") boolean email, @RequestParam(value = "name", required = false, defaultValue = "true") boolean name) { @@ -54,7 +54,7 @@ public class AdminController { * Assign admin role to logged-in user or user with @email * If role doesn't exist or user is not a member of this group already, use force=true to create and assign both roles. */ - @RequestMapping(value = "/{type}/{id}", method = RequestMethod.POST) + @RequestMapping(value = "/{type:.+}/{id}", method = RequestMethod.POST) public ResponseEntity assignRole(@PathVariable("type") String type, @PathVariable("id") String id, @RequestParam(required = false) String email, @RequestParam(required = false) String identifier, @RequestParam(value = "force", defaultValue = "false") boolean force) { @@ -101,7 +101,7 @@ public class AdminController { /** * Remove admin role from logged-in user or user with @email */ - @RequestMapping(value = "/{type}/{id}", method = RequestMethod.DELETE) + @RequestMapping(value = "/{type:.+}/{id}", method = RequestMethod.DELETE) public ResponseEntity removeRole(@PathVariable("type") String type, @PathVariable("id") String id, @RequestParam(required = false) String identifier, @RequestParam(required = false) String email) { diff --git a/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/CuratorController.java b/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/CuratorController.java index 2e13023..53b6703 100644 --- a/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/CuratorController.java +++ b/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/CuratorController.java @@ -36,9 +36,10 @@ public class CuratorController { /** * Create a new Curator role (only for admins) */ - @RequestMapping(value = "/{type}/create", method = RequestMethod.POST) + @RequestMapping(value = "/{type:.+}/create", method = RequestMethod.POST) public ResponseEntity createRole(@PathVariable("type") String type, @RequestParam(value = "description", required = false) String description) { try { + System.out.println(type); if (registryService.getCouId(AuthoritiesUtils.curatorRole(type)) == null) { registryService.createRole(AuthoritiesUtils.curatorRole(type), description != null?description:""); return ResponseEntity.ok(new Response("Role has been created successfully")); @@ -53,7 +54,7 @@ public class CuratorController { /** * Get the user info of the curators of a type(Community, etc.) */ - @RequestMapping(value = "/{type}", method = RequestMethod.GET) + @RequestMapping(value = "/{type:.+}", method = RequestMethod.GET) public ResponseEntity getAll(@PathVariable("type") String type, @RequestParam(value = "email", required = false, defaultValue = "true") boolean email, @RequestParam(value = "name", required = false, defaultValue = "true") boolean name) { @@ -70,7 +71,7 @@ public class CuratorController { /** * Assign curator role to logged in user or user with @email */ - @RequestMapping(value = "/{type}", method = RequestMethod.POST) + @RequestMapping(value = "/{type:.+}", method = RequestMethod.POST) public ResponseEntity assignRole(@PathVariable("type") String type, @RequestParam(required = false) String email, @RequestParam(value = "force", defaultValue = "false") boolean force) { List coPersonIds = registryService.getCoPersonIdsByEmail(email); @@ -93,7 +94,7 @@ public class CuratorController { /** * Remove curator role from logged in user or user with @email */ - @RequestMapping(value = "/{type}", method = RequestMethod.DELETE) + @RequestMapping(value = "/{type:.+}", method = RequestMethod.DELETE) public ResponseEntity removeRole(@PathVariable("type") String type, @RequestParam(required = false) String email) { List coPersonIds = registryService.getCoPersonIdsByEmail(email); if (coPersonIds.size() > 0) { diff --git a/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/MemberController.java b/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/MemberController.java index d61a533..9a9a2ca 100644 --- a/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/MemberController.java +++ b/src/main/java/eu/dnetlib/dnetrolemanagement/controllers/MemberController.java @@ -37,7 +37,7 @@ public class MemberController { /** * Create a new Group for an entity (only for admins) */ - @RequestMapping(value = "/{type}/{id}/create", method = RequestMethod.POST) + @RequestMapping(value = "/{type:.+}/{id}/create", method = RequestMethod.POST) public ResponseEntity createGroup(@PathVariable("type") String type, @PathVariable("id") String id, @RequestParam(value = "description", required = false) String description) { try { @@ -55,7 +55,7 @@ public class MemberController { /** * Get the user info of the members of a type(Community, etc.) with id(ee, egi, etc.) */ - @RequestMapping(value = "/{type}/{id}", method = RequestMethod.GET) + @RequestMapping(value = "/{type:.+}/{id}", method = RequestMethod.GET) public ResponseEntity getAll(@PathVariable("type") String type, @PathVariable("id") String id, @RequestParam(value = "isManager", required = false, defaultValue = "true") boolean isManager, @RequestParam(value = "email", required = false, defaultValue = "true") boolean email, @@ -79,7 +79,7 @@ public class MemberController { /** * Get the number of the members of a type(Community, etc.) with id(ee, egi, etc.) */ - @RequestMapping(value = "/{type}/{id}/count", method = RequestMethod.GET) + @RequestMapping(value = "/{type:.+}/{id}/count", method = RequestMethod.GET) public ResponseEntity getCount(@PathVariable("type") String type, @PathVariable("id") String id) { Integer couId = registryService.getCouId(AuthoritiesUtils.memberRole(type, id)); if (couId != null) { @@ -93,7 +93,7 @@ public class MemberController { * Assign member role to logged-in user or user with @email * If role doesn't exist, use force=true to create and assign the role */ - @RequestMapping(value = "/{type}/{id}", method = RequestMethod.POST) + @RequestMapping(value = "/{type:.+}/{id}", method = RequestMethod.POST) public ResponseEntity assignRole(@PathVariable("type") String type, @PathVariable("id") String id, @RequestParam(required = false) String identifier, @RequestParam(required = false) String email, @@ -118,7 +118,7 @@ public class MemberController { * Remove member role from logged-in user or user with @email * If user is an admin of this group, use force=true to revoke both roles */ - @RequestMapping(value = "/{type}/{id}", method = RequestMethod.DELETE) + @RequestMapping(value = "/{type:.+}/{id}", method = RequestMethod.DELETE) public ResponseEntity removeRole(@PathVariable("type") String type, @PathVariable("id") String id, @RequestParam(required = false) String identifier, @RequestParam(required = false) String email,