diff --git a/gms/pom.xml b/gms/pom.xml index e54edb902c65c224466b82007a7ede6760a62613..2f599fbbdf941399174822a076d7d14129206bcf 100644 --- a/gms/pom.xml +++ b/gms/pom.xml @@ -40,7 +40,7 @@ </dependency> <dependency> <groupId>${project.groupId}</groupId> - <artifactId>AuthLib</artifactId> + <artifactId>auth-lib</artifactId> <version>2.0.0-SNAPSHOT</version> </dependency> <dependency> diff --git a/gms/src/main/java/it/inaf/ia2/gms/controller/HomePageController.java b/gms/src/main/java/it/inaf/ia2/gms/controller/HomePageController.java index d39135f85d0b59659946b9e2fefcbcb4d4845689..b005156b253fe19f18490ecc1c14571731ebd78b 100644 --- a/gms/src/main/java/it/inaf/ia2/gms/controller/HomePageController.java +++ b/gms/src/main/java/it/inaf/ia2/gms/controller/HomePageController.java @@ -82,6 +82,10 @@ public class HomePageController { @GetMapping(value = "/", produces = MediaType.TEXT_HTML_VALUE) public String index(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + // This page MUST NOT be cached to avoid losing the login redirect + response.setHeader("Cache-Control", "no-store, must-revalidate"); + response.setHeader("Expires", "0"); + Optional<List<InvitedRegistration>> optReg = invitedRegistrationManager.completeInvitedRegistrationIfNecessary(); if (optReg.isPresent()) { request.setAttribute("invited-registrations", optReg.get()); @@ -95,6 +99,6 @@ public class HomePageController { public void logout(HttpSession httpSession, HttpServletResponse response) throws IOException { httpSession.invalidate(); String baseUrl = ServletUriComponentsBuilder.fromCurrentContextPath().build().toUriString(); - response.sendRedirect(baseUrl); + response.sendRedirect(baseUrl + "/"); } } diff --git a/gms/src/main/java/it/inaf/ia2/gms/controller/JWTWebServiceController.java b/gms/src/main/java/it/inaf/ia2/gms/controller/JWTWebServiceController.java index 930c8edea1a1de0e901c03c4e49d3bf67c730f3b..22ce42638c8767c29c72f1ee8e4147e1652ca164 100644 --- a/gms/src/main/java/it/inaf/ia2/gms/controller/JWTWebServiceController.java +++ b/gms/src/main/java/it/inaf/ia2/gms/controller/JWTWebServiceController.java @@ -239,15 +239,15 @@ public class JWTWebServiceController { @GetMapping(value = {"/permission/{group:.+}", "/permission"}, produces = MediaType.TEXT_PLAIN_VALUE) public void getUserPermission(@PathVariable("group") Optional<String> groupNames, @RequestParam("user_id") Optional<String> userId, HttpServletRequest request, HttpServletResponse response) throws IOException { + GroupEntity groupEntity = getGroupFromNames(extractGroupNames(groupNames)); if (userId.isPresent()) { try ( PrintWriter pw = new PrintWriter(response.getOutputStream())) { - for (UserPermission userPermission : searchService.getUserPermission(userId.get(), permissionsManager.getCurrentUserPermissions(getRoot()))) { + for (UserPermission userPermission : searchService.getUserPermission(groupEntity, userId.get(), permissionsManager.getCurrentUserPermissions(groupEntity))) { String group = String.join(".", userPermission.getGroupCompleteName()); pw.println(group + " " + userPermission.getPermission()); } } } else { - GroupEntity groupEntity = getGroupFromNames(extractGroupNames(groupNames)); try ( PrintWriter pw = new PrintWriter(response.getOutputStream())) { for (it.inaf.ia2.gms.model.UserPermission up : permissionsManager.getAllPermissions(groupEntity)) { pw.println(up.getUser().getId() + " " + up.getPermission()); diff --git a/gms/src/main/java/it/inaf/ia2/gms/service/SearchService.java b/gms/src/main/java/it/inaf/ia2/gms/service/SearchService.java index 89cd7c5fd6df52dc8a0bbdad142ed0ecd77b0fee..bd7f6355a0cb649d03d4b5aa50dfb2622d5f7aff 100644 --- a/gms/src/main/java/it/inaf/ia2/gms/service/SearchService.java +++ b/gms/src/main/java/it/inaf/ia2/gms/service/SearchService.java @@ -115,7 +115,7 @@ public class SearchService { sortByGroupCompleteName(groups); response.setGroups(groups); - List<UserPermission> permissions = getUserPermission(targetUserId, actorPermissions); + List<UserPermission> permissions = getUserPermission(groupsManager.getRoot(), targetUserId, actorPermissions); sortByGroupCompleteName(permissions); response.setPermissions(permissions); @@ -147,12 +147,12 @@ public class SearchService { .collect(Collectors.toList()); } - public List<UserPermission> getUserPermission(String targetUserId, List<PermissionEntity> actorPermissions) { + public List<UserPermission> getUserPermission(GroupEntity group, String targetUserId, List<PermissionEntity> actorPermissions) { List<UserPermission> permissions = new ArrayList<>(); // Super-admin user is able to see also other user permissions - PermissionUtils.getGroupPermission(groupsManager.getRoot(), actorPermissions).ifPresent(permission -> { + PermissionUtils.getGroupPermission(group, actorPermissions).ifPresent(permission -> { if (permission.equals(Permission.ADMIN)) { Map<String, PermissionEntity> targetUserPermissions