Loading gms/pom.xml +4 −9 Original line number Diff line number Diff line Loading @@ -34,14 +34,14 @@ </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.2.6</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> Loading @@ -58,11 +58,6 @@ <artifactId>spring-security-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>io.zonky.test</groupId> <artifactId>embedded-database-spring-test</artifactId> Loading gms/src/main/java/it/inaf/ia2/gms/authn/SessionData.java +0 −11 Original line number Diff line number Diff line package it.inaf.ia2.gms.authn; import it.inaf.ia2.gms.persistence.UsersRepository; import it.inaf.ia2.gms.persistence.model.User; import javax.annotation.PostConstruct; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; Loading @@ -16,9 +14,6 @@ public class SessionData { @Autowired private HttpServletRequest request; @Autowired private UsersRepository usersRepository; private String userId; private String accessToken; Loading @@ -27,12 +22,6 @@ public class SessionData { CustomAuthenticationData authn = (CustomAuthenticationData) ((OAuth2Authentication) request.getUserPrincipal()).getUserAuthentication(); userId = (String) authn.getPrincipal(); accessToken = (String) authn.getAccessToken().getValue(); if (!usersRepository.findById(userId).isPresent()) { User user = new User(); user.setId(userId); usersRepository.save(user); } } public String getUserId() { Loading gms/src/main/java/it/inaf/ia2/gms/controller/GroupsController.java +16 −24 Original line number Diff line number Diff line Loading @@ -8,12 +8,10 @@ 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.RenameGroupRequest; import it.inaf.ia2.gms.persistence.model.Group; import it.inaf.ia2.gms.persistence.model.User; import it.inaf.ia2.gms.service.GroupsModelService; 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.UsersService; import java.util.List; import it.inaf.ia2.gms.service.GroupsTreeBuilder; import javax.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; Loading @@ -34,13 +32,13 @@ public class GroupsController { private SessionData session; @Autowired private UsersService usersService; private GroupsService groupsService; @Autowired private GroupsModelService groupsModelService; private GroupsModelBuilder groupsModelService; @Autowired private GroupsService groupsService; private GroupsTreeBuilder groupsTreeBuilder; @GetMapping(value = "/groups", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public GroupsModelResponse getGroupsModelResponse(@Valid GroupsModelRequest groupsModelRequest) { Loading @@ -50,10 +48,9 @@ public class GroupsController { @PostMapping(value = "/group", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public ResponseEntity<PaginatedData<GroupNode>> createGroup(@Valid @RequestBody CreateGroupRequest request) { User user = getUser(); Group newGroup = groupsService.addGroup(request.getParentGroupId(), request.getNewGroupName(), user); GroupEntity newGroup = groupsService.addGroup(request.getParentGroupId(), request.getNewGroupName(), session.getUserId()); PaginatedData<GroupNode> groupsPanel = getGroupsPanel(newGroup.getParentGroup(), request, user); PaginatedData<GroupNode> groupsPanel = getGroupsPanel(request.getParentGroupId(), request); return new ResponseEntity<>(groupsPanel, HttpStatus.CREATED); } Loading @@ -61,10 +58,11 @@ public class GroupsController { @PutMapping(value = "/group/{groupId}", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public ResponseEntity<PaginatedData<GroupNode>> renameGroup(@PathVariable("groupId") String groupId, @Valid @RequestBody RenameGroupRequest request) { User user = getUser(); Group renamedGroup = groupsService.renameGroup(groupId, request.getNewGroupName(), user); GroupEntity renamedGroup = groupsService.renameGroup(groupId, request.getNewGroupName(), session.getUserId()); GroupEntity parent = groupsService.getGroupByPath(renamedGroup.getParentPath()); PaginatedData<GroupNode> groupsPanel = getGroupsPanel(renamedGroup.getParentGroup(), request, user); PaginatedData<GroupNode> groupsPanel = getGroupsPanel(parent.getId(), request); return ResponseEntity.ok(groupsPanel); } Loading @@ -72,20 +70,14 @@ public class GroupsController { @DeleteMapping(value = "/group/{groupId}", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public ResponseEntity<?> deleteGroup(@PathVariable("groupId") String groupId, PaginatedModelRequest request) { User user = getUser(); Group parent = groupsService.deleteGroup(groupId, user); GroupEntity parent = groupsService.deleteGroup(groupId, session.getUserId()); PaginatedData<GroupNode> groupsPanel = getGroupsPanel(parent, request, user); PaginatedData<GroupNode> groupsPanel = getGroupsPanel(parent.getId(), request); return ResponseEntity.ok(groupsPanel); } private User getUser() { return usersService.getUserById(session.getUserId()); } private PaginatedData<GroupNode> getGroupsPanel(Group parentGroup, PaginatedModelRequest paginatedRequest, User user) { List<GroupNode> groupNodes = groupsService.getSubgroups(parentGroup, user); return new PaginatedData<>(groupNodes, paginatedRequest.getPaginatorPage(), paginatedRequest.getPaginatorPageSize()); private PaginatedData<GroupNode> getGroupsPanel(String parentGroupId, PaginatedModelRequest paginatedRequest) { return groupsTreeBuilder.listSubGroups(parentGroupId, session.getUserId(), paginatedRequest); } } gms/src/main/java/it/inaf/ia2/gms/controller/PermissionsController.java +0 −10 Original line number Diff line number Diff line Loading @@ -2,9 +2,7 @@ package it.inaf.ia2.gms.controller; import it.inaf.ia2.gms.authn.SessionData; import it.inaf.ia2.gms.model.Permission; import it.inaf.ia2.gms.persistence.model.User; import it.inaf.ia2.gms.service.PermissionsService; import it.inaf.ia2.gms.service.UsersService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; Loading @@ -18,19 +16,11 @@ public class PermissionsController { @Autowired private SessionData session; @Autowired private UsersService usersService; @Autowired private PermissionsService permissionsService; @DeleteMapping(value = "/permission", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public ResponseEntity deletePermission(@RequestParam("user") String userId, @RequestParam("group") String group, @RequestParam("permission") Permission permission) { User user = getUser(); return null; } private User getUser() { return usersService.getUserById(session.getUserId()); } } gms/src/main/java/it/inaf/ia2/gms/model/GroupNode.java +5 −47 Original line number Diff line number Diff line package it.inaf.ia2.gms.model; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; public class GroupNode { private String groupId; private String groupName; private Set<Permission> permissions; private Permission permission; private boolean hasChildren; public GroupNode() { permissions = new HashSet<>(); } public String getGroupId() { return groupId; } Loading @@ -33,44 +23,12 @@ public class GroupNode { this.groupName = groupName; } public List<Permission> getPermissions() { return Collections.unmodifiableList(new ArrayList<>(permissions)); } public void setPermissions(Set<Permission> permissions) { this.permissions = permissions; public Permission getPermission() { return permission; } public void addPermission(Permission permission) { // remove implied permissions switch (permission) { case ADMIN: permissions.add(permission); permissions.remove(Permission.MANAGE_MEMBERS); permissions.remove(Permission.VIEW_MEMBERS); permissions.remove(Permission.TRAVERSE); break; case MANAGE_MEMBERS: if (!permissions.contains(Permission.ADMIN)) { permissions.add(permission); permissions.remove(Permission.VIEW_MEMBERS); permissions.remove(Permission.TRAVERSE); } break; case VIEW_MEMBERS: if (!permissions.contains(Permission.ADMIN) && !permissions.contains(Permission.MANAGE_MEMBERS)) { permissions.add(permission); permissions.remove(Permission.TRAVERSE); } break; case TRAVERSE: if (permissions.isEmpty()) { permissions.add(permission); } break; } public void setPermission(Permission permission) { this.permission = permission; } public boolean isHasChildren() { Loading Loading
gms/pom.xml +4 −9 Original line number Diff line number Diff line Loading @@ -34,14 +34,14 @@ </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.2.6</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> Loading @@ -58,11 +58,6 @@ <artifactId>spring-security-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>io.zonky.test</groupId> <artifactId>embedded-database-spring-test</artifactId> Loading
gms/src/main/java/it/inaf/ia2/gms/authn/SessionData.java +0 −11 Original line number Diff line number Diff line package it.inaf.ia2.gms.authn; import it.inaf.ia2.gms.persistence.UsersRepository; import it.inaf.ia2.gms.persistence.model.User; import javax.annotation.PostConstruct; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; Loading @@ -16,9 +14,6 @@ public class SessionData { @Autowired private HttpServletRequest request; @Autowired private UsersRepository usersRepository; private String userId; private String accessToken; Loading @@ -27,12 +22,6 @@ public class SessionData { CustomAuthenticationData authn = (CustomAuthenticationData) ((OAuth2Authentication) request.getUserPrincipal()).getUserAuthentication(); userId = (String) authn.getPrincipal(); accessToken = (String) authn.getAccessToken().getValue(); if (!usersRepository.findById(userId).isPresent()) { User user = new User(); user.setId(userId); usersRepository.save(user); } } public String getUserId() { Loading
gms/src/main/java/it/inaf/ia2/gms/controller/GroupsController.java +16 −24 Original line number Diff line number Diff line Loading @@ -8,12 +8,10 @@ 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.RenameGroupRequest; import it.inaf.ia2.gms.persistence.model.Group; import it.inaf.ia2.gms.persistence.model.User; import it.inaf.ia2.gms.service.GroupsModelService; 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.UsersService; import java.util.List; import it.inaf.ia2.gms.service.GroupsTreeBuilder; import javax.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; Loading @@ -34,13 +32,13 @@ public class GroupsController { private SessionData session; @Autowired private UsersService usersService; private GroupsService groupsService; @Autowired private GroupsModelService groupsModelService; private GroupsModelBuilder groupsModelService; @Autowired private GroupsService groupsService; private GroupsTreeBuilder groupsTreeBuilder; @GetMapping(value = "/groups", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public GroupsModelResponse getGroupsModelResponse(@Valid GroupsModelRequest groupsModelRequest) { Loading @@ -50,10 +48,9 @@ public class GroupsController { @PostMapping(value = "/group", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public ResponseEntity<PaginatedData<GroupNode>> createGroup(@Valid @RequestBody CreateGroupRequest request) { User user = getUser(); Group newGroup = groupsService.addGroup(request.getParentGroupId(), request.getNewGroupName(), user); GroupEntity newGroup = groupsService.addGroup(request.getParentGroupId(), request.getNewGroupName(), session.getUserId()); PaginatedData<GroupNode> groupsPanel = getGroupsPanel(newGroup.getParentGroup(), request, user); PaginatedData<GroupNode> groupsPanel = getGroupsPanel(request.getParentGroupId(), request); return new ResponseEntity<>(groupsPanel, HttpStatus.CREATED); } Loading @@ -61,10 +58,11 @@ public class GroupsController { @PutMapping(value = "/group/{groupId}", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public ResponseEntity<PaginatedData<GroupNode>> renameGroup(@PathVariable("groupId") String groupId, @Valid @RequestBody RenameGroupRequest request) { User user = getUser(); Group renamedGroup = groupsService.renameGroup(groupId, request.getNewGroupName(), user); GroupEntity renamedGroup = groupsService.renameGroup(groupId, request.getNewGroupName(), session.getUserId()); GroupEntity parent = groupsService.getGroupByPath(renamedGroup.getParentPath()); PaginatedData<GroupNode> groupsPanel = getGroupsPanel(renamedGroup.getParentGroup(), request, user); PaginatedData<GroupNode> groupsPanel = getGroupsPanel(parent.getId(), request); return ResponseEntity.ok(groupsPanel); } Loading @@ -72,20 +70,14 @@ public class GroupsController { @DeleteMapping(value = "/group/{groupId}", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public ResponseEntity<?> deleteGroup(@PathVariable("groupId") String groupId, PaginatedModelRequest request) { User user = getUser(); Group parent = groupsService.deleteGroup(groupId, user); GroupEntity parent = groupsService.deleteGroup(groupId, session.getUserId()); PaginatedData<GroupNode> groupsPanel = getGroupsPanel(parent, request, user); PaginatedData<GroupNode> groupsPanel = getGroupsPanel(parent.getId(), request); return ResponseEntity.ok(groupsPanel); } private User getUser() { return usersService.getUserById(session.getUserId()); } private PaginatedData<GroupNode> getGroupsPanel(Group parentGroup, PaginatedModelRequest paginatedRequest, User user) { List<GroupNode> groupNodes = groupsService.getSubgroups(parentGroup, user); return new PaginatedData<>(groupNodes, paginatedRequest.getPaginatorPage(), paginatedRequest.getPaginatorPageSize()); private PaginatedData<GroupNode> getGroupsPanel(String parentGroupId, PaginatedModelRequest paginatedRequest) { return groupsTreeBuilder.listSubGroups(parentGroupId, session.getUserId(), paginatedRequest); } }
gms/src/main/java/it/inaf/ia2/gms/controller/PermissionsController.java +0 −10 Original line number Diff line number Diff line Loading @@ -2,9 +2,7 @@ package it.inaf.ia2.gms.controller; import it.inaf.ia2.gms.authn.SessionData; import it.inaf.ia2.gms.model.Permission; import it.inaf.ia2.gms.persistence.model.User; import it.inaf.ia2.gms.service.PermissionsService; import it.inaf.ia2.gms.service.UsersService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; Loading @@ -18,19 +16,11 @@ public class PermissionsController { @Autowired private SessionData session; @Autowired private UsersService usersService; @Autowired private PermissionsService permissionsService; @DeleteMapping(value = "/permission", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public ResponseEntity deletePermission(@RequestParam("user") String userId, @RequestParam("group") String group, @RequestParam("permission") Permission permission) { User user = getUser(); return null; } private User getUser() { return usersService.getUserById(session.getUserId()); } }
gms/src/main/java/it/inaf/ia2/gms/model/GroupNode.java +5 −47 Original line number Diff line number Diff line package it.inaf.ia2.gms.model; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; public class GroupNode { private String groupId; private String groupName; private Set<Permission> permissions; private Permission permission; private boolean hasChildren; public GroupNode() { permissions = new HashSet<>(); } public String getGroupId() { return groupId; } Loading @@ -33,44 +23,12 @@ public class GroupNode { this.groupName = groupName; } public List<Permission> getPermissions() { return Collections.unmodifiableList(new ArrayList<>(permissions)); } public void setPermissions(Set<Permission> permissions) { this.permissions = permissions; public Permission getPermission() { return permission; } public void addPermission(Permission permission) { // remove implied permissions switch (permission) { case ADMIN: permissions.add(permission); permissions.remove(Permission.MANAGE_MEMBERS); permissions.remove(Permission.VIEW_MEMBERS); permissions.remove(Permission.TRAVERSE); break; case MANAGE_MEMBERS: if (!permissions.contains(Permission.ADMIN)) { permissions.add(permission); permissions.remove(Permission.VIEW_MEMBERS); permissions.remove(Permission.TRAVERSE); } break; case VIEW_MEMBERS: if (!permissions.contains(Permission.ADMIN) && !permissions.contains(Permission.MANAGE_MEMBERS)) { permissions.add(permission); permissions.remove(Permission.TRAVERSE); } break; case TRAVERSE: if (permissions.isEmpty()) { permissions.add(permission); } break; } public void setPermission(Permission permission) { this.permission = permission; } public boolean isHasChildren() { Loading