From e3dd21427f0d78b5511fda113f8184b1745e311b Mon Sep 17 00:00:00 2001
From: Sonia Zorba <sonia.zorba@inaf.it>
Date: Fri, 30 Oct 2020 18:59:55 +0100
Subject: [PATCH] Bugfix

---
 gms/pom.xml                                                 | 2 +-
 .../java/it/inaf/ia2/gms/controller/HomePageController.java | 6 +++++-
 .../it/inaf/ia2/gms/controller/JWTWebServiceController.java | 4 ++--
 .../main/java/it/inaf/ia2/gms/service/SearchService.java    | 6 +++---
 4 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/gms/pom.xml b/gms/pom.xml
index e54edb9..2f599fb 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 d39135f..b005156 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 930c8ed..22ce426 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 89cd7c5..bd7f635 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
-- 
GitLab