Commit 84ee72a5 authored by Sonia Zorba's avatar Sonia Zorba Committed by zonia3000
Browse files

Refactoring and cleanup

parent 14f15a70
Loading
Loading
Loading
Loading
+12 −13
Original line number Diff line number Diff line
@@ -2,16 +2,15 @@ package it.inaf.ia2.gms.controller;

import it.inaf.ia2.gms.authn.SessionData;
import it.inaf.ia2.gms.exception.UnauthorizedException;
import it.inaf.ia2.gms.model.CreateGroupRequest;
import it.inaf.ia2.gms.model.request.AddGroupRequest;
import it.inaf.ia2.gms.model.GroupNode;
import it.inaf.ia2.gms.model.GroupsModelRequest;
import it.inaf.ia2.gms.model.GroupsModelResponse;
import it.inaf.ia2.gms.model.PaginatedData;
import it.inaf.ia2.gms.model.PaginatedModelRequest;
import it.inaf.ia2.gms.model.request.TabRequest;
import it.inaf.ia2.gms.model.response.PaginatedData;
import it.inaf.ia2.gms.model.request.PaginatedModelRequest;
import it.inaf.ia2.gms.model.Permission;
import it.inaf.ia2.gms.model.RenameGroupRequest;
import it.inaf.ia2.gms.model.request.RenameGroupRequest;
import it.inaf.ia2.gms.model.response.GroupsTabResponse;
import it.inaf.ia2.gms.persistence.model.GroupEntity;
import it.inaf.ia2.gms.service.GroupsModelBuilder;
import it.inaf.ia2.gms.service.GroupsService;
import it.inaf.ia2.gms.service.GroupsTreeBuilder;
import it.inaf.ia2.gms.service.PermissionsService;
@@ -41,18 +40,18 @@ public class GroupsController {
    private GroupsService groupsService;

    @Autowired
    private GroupsModelBuilder groupsModelService;
    private GroupsTreeBuilder groupsTreeBuilder;

    @Autowired
    private GroupsTreeBuilder groupsTreeBuilder;
    private GroupsTabResponseBuilder groupsTabResponseBuilder;

    @GetMapping(value = "/groups", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public GroupsModelResponse getGroupsModelResponse(@Valid GroupsModelRequest groupsModelRequest) {
        return groupsModelService.getGroupsModel(groupsModelRequest, session.getUserId());
    public ResponseEntity<GroupsTabResponse> getGroupsTab(@Valid TabRequest request) {
        return ResponseEntity.ok(groupsTabResponseBuilder.getGroupsTab(request));
    }

    @PostMapping(value = "/group", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public ResponseEntity<PaginatedData<GroupNode>> createGroup(@Valid @RequestBody CreateGroupRequest request) {
    public ResponseEntity<PaginatedData<GroupNode>> createGroup(@Valid @RequestBody AddGroupRequest request) {

        GroupEntity parent = groupsService.getGroupById(request.getParentGroupId());

@@ -60,7 +59,7 @@ public class GroupsController {
            throw new UnauthorizedException("Missing admin permission");
        }

        GroupEntity newGroup = groupsService.addGroup(parent, request.getNewGroupName());
        groupsService.addGroup(parent, request.getNewGroupName());

        PaginatedData<GroupNode> groupsPanel = getGroupsPanel(request.getParentGroupId(), request);

+44 −0
Original line number Diff line number Diff line
package it.inaf.ia2.gms.service;
package it.inaf.ia2.gms.controller;

import it.inaf.ia2.gms.model.GroupsModelRequest;
import it.inaf.ia2.gms.model.GroupsModelResponse;
import it.inaf.ia2.gms.model.PaginatedData;
import it.inaf.ia2.gms.authn.SessionData;
import it.inaf.ia2.gms.model.Permission;
import it.inaf.ia2.gms.model.RapUser;
import it.inaf.ia2.gms.model.UserPermission;
import it.inaf.ia2.gms.model.request.TabRequest;
import it.inaf.ia2.gms.model.response.GroupsTabResponse;
import it.inaf.ia2.gms.persistence.model.GroupEntity;
import java.util.List;
import it.inaf.ia2.gms.service.GroupsService;
import it.inaf.ia2.gms.service.GroupsTreeBuilder;
import it.inaf.ia2.gms.service.PermissionsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class GroupsModelBuilder {
public class GroupsTabResponseBuilder {

    @Autowired
    private GroupsService groupsService;
    private SessionData session;

    @Autowired
    private GroupsTreeBuilder groupsTreeBuilder;
    private PermissionsService permissionsService;

    @Autowired
    private MembersService membersService;
    private GroupsService groupsService;

    @Autowired
    private PermissionsService permissionsService;
    private GroupsTreeBuilder groupsTreeBuilder;

    public GroupsModelResponse getGroupsModel(GroupsModelRequest request, String userId) {
    public GroupsTabResponse getGroupsTab(TabRequest request) {

        GroupEntity group = groupsService.getGroupById(request.getGroupId());

        GroupsModelResponse response = new GroupsModelResponse();

        response.setPage("groups");
        GroupsTabResponse response = new GroupsTabResponse();

        response.setBreadcrumbs(groupsService.getBreadcrumbs(group.getPath()));

        Permission currentNodePermissions = permissionsService.getUserPermissionForGroup(group, userId);
        Permission currentNodePermissions = permissionsService.getUserPermissionForGroup(group, session.getUserId());
        response.setPermission(currentNodePermissions);

        switch (request.getTab()) {
            case "groups":
                response.setGroupsPanel(groupsTreeBuilder.listSubGroups(group.getId(), userId, request));
                break;
            case "members":
                if (currentNodePermissions != Permission.TRAVERSE) {
                    List<RapUser> members = membersService.getMembers(group.getId());
                    response.setMembersPanel(new PaginatedData<>(members, request.getPaginatorPage(), request.getPaginatorPageSize()));
                }
                break;
            case "permissions":
                if (currentNodePermissions == Permission.ADMIN) {
                    List<UserPermission> permissions = permissionsService.getAllPermissions(group);
                    response.setPermissionsPanel(new PaginatedData<>(permissions, request.getPaginatorPage(), request.getPaginatorPageSize()));
                }
                break;
        }
        response.setGroupsPanel(groupsTreeBuilder.listSubGroups(group.getId(), session.getUserId(), request));

        return response;
    }
+39 −0
Original line number Diff line number Diff line
package it.inaf.ia2.gms.controller;

import it.inaf.ia2.gms.authn.SessionData;
import it.inaf.ia2.gms.model.request.TabRequest;
import it.inaf.ia2.gms.model.response.GroupsTabResponse;
import it.inaf.ia2.gms.model.response.HomePageResponse;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HomePageController {

    @Autowired
    private SessionData session;

    @Autowired
    private GroupsTabResponseBuilder groupsTabResponseBuilder;

    @ResponseBody
    @GetMapping(value = "/home", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public ResponseEntity<HomePageResponse> getMainPage(@Valid TabRequest request) {

        HomePageResponse response = new HomePageResponse();

        response.setUser(session.getUserId());

        GroupsTabResponse groupsTabResponse = groupsTabResponseBuilder.getGroupsTab(request);
        response.setBreadcrumbs(groupsTabResponse.getBreadcrumbs());
        response.setGroupsPanel(groupsTabResponse.getGroupsPanel());
        response.setPermission(groupsTabResponse.getPermission());

        return ResponseEntity.ok(response);
    }
}
+22 −4
Original line number Diff line number Diff line
@@ -2,12 +2,13 @@ package it.inaf.ia2.gms.controller;

import it.inaf.ia2.gms.authn.SessionData;
import it.inaf.ia2.gms.exception.UnauthorizedException;
import it.inaf.ia2.gms.model.AddMemberRequest;
import it.inaf.ia2.gms.model.MemberRequest;
import it.inaf.ia2.gms.model.PaginatedData;
import it.inaf.ia2.gms.model.request.AddMemberRequest;
import it.inaf.ia2.gms.model.request.MemberRequest;
import it.inaf.ia2.gms.model.response.PaginatedData;
import it.inaf.ia2.gms.model.Permission;
import it.inaf.ia2.gms.model.RapUser;
import it.inaf.ia2.gms.model.RemoveMemberRequest;
import it.inaf.ia2.gms.model.request.RemoveMemberRequest;
import it.inaf.ia2.gms.model.request.TabRequest;
import it.inaf.ia2.gms.persistence.model.GroupEntity;
import it.inaf.ia2.gms.service.GroupsService;
import it.inaf.ia2.gms.service.MembersService;
@@ -19,6 +20,7 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@@ -38,6 +40,22 @@ public class MembersController {
    @Autowired
    private MembersService membersService;

    @GetMapping(value = "/members", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public ResponseEntity<PaginatedData<RapUser>> getMembersTab(TabRequest request) {

        GroupEntity group = groupsService.getGroupById(request.getGroupId());
        Permission currentNodePermissions = permissionsService.getUserPermissionForGroup(group, session.getUserId());

        if (currentNodePermissions == Permission.TRAVERSE) {
            throw new UnauthorizedException("You have not the permission to view members");
        }

        List<RapUser> members = membersService.getMembers(group.getId());
        PaginatedData<RapUser> membersPanel = new PaginatedData<>(members, request.getPaginatorPage(), request.getPaginatorPageSize());

        return ResponseEntity.ok(membersPanel);
    }

    @PostMapping(value = "/member", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public ResponseEntity<PaginatedData<RapUser>> addMember(@Valid @RequestBody AddMemberRequest request) {

+22 −5
Original line number Diff line number Diff line
@@ -2,12 +2,13 @@ package it.inaf.ia2.gms.controller;

import it.inaf.ia2.gms.authn.SessionData;
import it.inaf.ia2.gms.exception.UnauthorizedException;
import it.inaf.ia2.gms.model.AddPermissionRequest;
import it.inaf.ia2.gms.model.MemberRequest;
import it.inaf.ia2.gms.model.PaginatedData;
import it.inaf.ia2.gms.model.PaginatedModelRequest;
import it.inaf.ia2.gms.model.request.AddPermissionRequest;
import it.inaf.ia2.gms.model.request.MemberRequest;
import it.inaf.ia2.gms.model.response.PaginatedData;
import it.inaf.ia2.gms.model.request.PaginatedModelRequest;
import it.inaf.ia2.gms.model.Permission;
import it.inaf.ia2.gms.model.UserPermission;
import it.inaf.ia2.gms.model.request.TabRequest;
import it.inaf.ia2.gms.persistence.model.GroupEntity;
import it.inaf.ia2.gms.service.GroupsService;
import it.inaf.ia2.gms.service.PermissionsService;
@@ -38,7 +39,23 @@ public class PermissionsController {
    @Autowired
    private PermissionsService permissionsService;

    @GetMapping(value = "/permission")
    @GetMapping(value = "/permissions", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public ResponseEntity<PaginatedData<UserPermission>> getPermissionsTab(TabRequest request) {

        GroupEntity group = groupsService.getGroupById(request.getGroupId());
        Permission currentNodePermissions = permissionsService.getUserPermissionForGroup(group, session.getUserId());

        if (currentNodePermissions != Permission.ADMIN) {
            throw new UnauthorizedException("Only administrators can see the permissions");
        }

        List<UserPermission> permissions = permissionsService.getAllPermissions(group);
        PaginatedData<UserPermission> permissionsPanel = new PaginatedData<>(permissions, request.getPaginatorPage(), request.getPaginatorPageSize());

        return ResponseEntity.ok(permissionsPanel);
    }

    @GetMapping(value = "/permission", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public ResponseEntity<Map<String, Permission>> getUserPermission(@RequestParam("groupId") String groupId, @RequestParam("userId") String userId) {

        GroupEntity group = groupsService.getGroupById(groupId);
Loading