Commit 7e64d1d6 authored by Sonia Zorba's avatar Sonia Zorba
Browse files

Permission controller: allowed retrieval of own permissions for non-admin users

parent f2598703
Loading
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -155,6 +155,9 @@
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.2</version>
                <configuration>
                    <trimStackTrace>false</trimStackTrace>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
+19 −4
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
@@ -128,12 +129,26 @@ public class PermissionsController {

        GroupEntity groupEntity = groupNameService.getGroupFromNames(groupNames);
        if (userId.isPresent()) {
            if (userId.get().equals(request.getUserPrincipal().getName())) {
                // asking my permissions
                try ( PrintWriter pw = new PrintWriter(response.getOutputStream())) {
                    List<PermissionEntity> userPermissions = permissionsManager.getCurrentUserPermissions();

                    Map<String, List<String>> namesMap = groupNameService.getNamesFromIds(userPermissions.stream()
                            .map(pe -> pe.getGroupId()).collect(Collectors.toSet()));

                    for (PermissionEntity pe : userPermissions) {
                        pw.println(groupNameService.getCompleteName(namesMap.get(pe.getGroupId())) + " " + pe.getPermission());
                    }
                }
            } else {
                try ( PrintWriter pw = new PrintWriter(response.getOutputStream())) {
                    for (UserPermission userPermission : searchService.getUserPermission(groupEntity, userId.get(), permissionsManager.getCurrentUserPermissions(groupEntity))) {
                        String group = groupNameService.getCompleteName(userPermission.getGroupCompleteName());
                        pw.println(group + " " + userPermission.getPermission());
                    }
                }
            }
        } else {
            try ( PrintWriter pw = new PrintWriter(response.getOutputStream())) {
                for (it.inaf.ia2.gms.model.RapUserPermission up : permissionsManager.getAllPermissions(groupEntity)) {
+19 −0
Original line number Diff line number Diff line
@@ -21,7 +21,9 @@ import it.inaf.ia2.gms.service.SearchService;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import static org.hamcrest.CoreMatchers.is;
import org.junit.Before;
import org.junit.Test;
@@ -148,6 +150,23 @@ public class PermissionsControllerTest {
                .andExpect(content().string("rap_user ADMIN\n"));
    }

    @Test
    public void testGetMyPermissions() throws Exception {

        when(groupsDAO.findGroupById("ROOT")).thenReturn(Optional.of(new GroupEntity()));
        when(groupsDAO.getGroupCompleteNamesFromId(Set.of("group_id"))).thenReturn(Map.of("group_id", "TNG"));

        PermissionEntity pe = new PermissionEntity();
        pe.setGroupId("group_id");
        pe.setPermission(Permission.VIEW_MEMBERS);
        when(permissionsManager.getCurrentUserPermissions()).thenReturn(List.of(pe));

        mockMvc.perform(get("/permission?user_id=TEST_PRINCIPAL").principal(getPrincipal())
                .accept(MediaType.TEXT_PLAIN))
                .andExpect(status().isOk())
                .andExpect(content().string("TNG VIEW_MEMBERS\n"));
    }

    @Test
    public void testGetUserPermissions() throws Exception {