From f8ebf0716aee3fa52f061e8a83920e9a593e82f0 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Wed, 16 Aug 2017 12:15:27 +0200 Subject: [PATCH] api for retrieveing all users data --- .../mapviewer/api/users/UserController.java | 10 +++++ .../mapviewer/api/users/UserRestImpl.java | 44 +++++++++---------- .../mapviewer/api/users/UserRestImplTest.java | 15 ++++++- .../mapviewer/services/impl/UserService.java | 11 ++++- .../services/interfaces/IUserService.java | 2 + 5 files changed, 55 insertions(+), 27 deletions(-) diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/users/UserController.java b/rest-api/src/main/java/lcsb/mapviewer/api/users/UserController.java index 2e9f263597..025355abd3 100644 --- a/rest-api/src/main/java/lcsb/mapviewer/api/users/UserController.java +++ b/rest-api/src/main/java/lcsb/mapviewer/api/users/UserController.java @@ -3,6 +3,7 @@ package lcsb.mapviewer.api.users; import java.io.IOException; import java.util.Calendar; import java.util.HashMap; +import java.util.List; import java.util.Map; import javax.servlet.http.Cookie; @@ -71,6 +72,15 @@ public class UserController extends BaseController { ) throws SecurityException, ObjectNotFoundException { return userRest.getUser(token, login, columns); } + + @RequestMapping(value = "/users/", method = { RequestMethod.GET }, produces = { MediaType.APPLICATION_JSON_VALUE }) + public List<Map<String, Object>> getUsers(// + @CookieValue(value = Configuration.AUTH_TOKEN) String token, // + @PathVariable(value = "login") String login, // + @RequestParam(value = "columns", defaultValue = "") String columns// + ) throws SecurityException, ObjectNotFoundException { + return userRest.getUsers(token, columns); + } @RequestMapping(value = "/doLogout", method = { RequestMethod.GET, RequestMethod.POST }, produces = { MediaType.APPLICATION_JSON_VALUE }) public Map<String, String> logout(@CookieValue(value = Configuration.AUTH_TOKEN) String token, diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/users/UserRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/users/UserRestImpl.java index bcd07b094b..427f8f0b07 100644 --- a/rest-api/src/main/java/lcsb/mapviewer/api/users/UserRestImpl.java +++ b/rest-api/src/main/java/lcsb/mapviewer/api/users/UserRestImpl.java @@ -10,6 +10,7 @@ import java.util.Set; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; +import lcsb.mapviewer.api.BaseRestImpl; import lcsb.mapviewer.api.ObjectNotFoundException; import lcsb.mapviewer.common.exception.InvalidArgumentException; import lcsb.mapviewer.model.user.BasicPrivilege; @@ -19,44 +20,25 @@ import lcsb.mapviewer.model.user.User; import lcsb.mapviewer.services.SecurityException; import lcsb.mapviewer.services.interfaces.ILayoutService; import lcsb.mapviewer.services.interfaces.IUserService; +import lcsb.mapviewer.services.view.AuthenticationToken; @Transactional(value = "txManager") -public class UserRestImpl { - - @Autowired - private IUserService userService; +public class UserRestImpl extends BaseRestImpl { @Autowired private ILayoutService layoutService; - /** - * @return the userService - * @see #userService - */ - public IUserService getUserService() { - return userService; - } - - /** - * @param userService - * the userService to set - * @see #userService - */ - public void setUserService(IUserService userService) { - this.userService = userService; - } - public Map<String, Object> getUser(String token, String login, String columns) throws SecurityException, ObjectNotFoundException { - User ownUserData = userService.getUserByToken(token); + User ownUserData = getUserService().getUserByToken(token); Set<String> columnSet = createUserColumnSet(columns); - boolean isAdmin = userService.userHasPrivilege(ownUserData, PrivilegeType.USER_MANAGEMENT); + boolean isAdmin = getUserService().userHasPrivilege(ownUserData, PrivilegeType.USER_MANAGEMENT); if (ownUserData.getLogin().equals(login)) { return prepareUse(ownUserData, columnSet, true); } else if (isAdmin) { - User user = userService.getUserByLogin(login); + User user = getUserService().getUserByLogin(login); if (user == null) { throw new ObjectNotFoundException("User doesn't exist"); } @@ -172,4 +154,18 @@ public class UserRestImpl { this.layoutService = layoutService; } + public List<Map<String, Object>> getUsers(String token, String columns) throws SecurityException { + AuthenticationToken authenticationToken = getUserService().getToken(token); + User ownUserData = getUserService().getUserByToken(token); + boolean isAdmin = getUserService().userHasPrivilege(ownUserData, PrivilegeType.USER_MANAGEMENT); + + Set<String> columnSet = createUserColumnSet(columns); + + List<Map<String, Object>> result = new ArrayList<>(); + for (User user : getUserService().getUsers(authenticationToken)) { + result.add(prepareUse(user, columnSet, isAdmin)); + } + return result; + } + } diff --git a/rest-api/src/test/java/lcsb/mapviewer/api/users/UserRestImplTest.java b/rest-api/src/test/java/lcsb/mapviewer/api/users/UserRestImplTest.java index 7fe01ae6bb..af81cc5eed 100644 --- a/rest-api/src/test/java/lcsb/mapviewer/api/users/UserRestImplTest.java +++ b/rest-api/src/test/java/lcsb/mapviewer/api/users/UserRestImplTest.java @@ -14,7 +14,7 @@ import lcsb.mapviewer.api.users.UserRestImpl; import lcsb.mapviewer.common.Configuration; public class UserRestImplTest extends RestTestFunctions { - Logger logger = Logger.getLogger(UserRestImplTest.class); + Logger logger = Logger.getLogger(UserRestImplTest.class); @Autowired UserRestImpl userRestImpl; @@ -32,7 +32,7 @@ public class UserRestImplTest extends RestTestFunctions { } @Test - public void test() throws Exception { + public void testGetUser() throws Exception { try { Object response = userRestImpl.getUser(token.getId(), Configuration.ANONYMOUS_LOGIN, ""); assertNotNull(response); @@ -42,4 +42,15 @@ public class UserRestImplTest extends RestTestFunctions { } } + @Test + public void testGetUsers() throws Exception { + try { + Object response = userRestImpl.getUsers(adminToken.getId(), ""); + assertNotNull(response); + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + } diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/UserService.java b/service/src/main/java/lcsb/mapviewer/services/impl/UserService.java index bf663ae19f..3c21473a35 100644 --- a/service/src/main/java/lcsb/mapviewer/services/impl/UserService.java +++ b/service/src/main/java/lcsb/mapviewer/services/impl/UserService.java @@ -207,7 +207,7 @@ public class UserService implements IUserService { public List<UserView> getAllUserRows() { List<Project> projects = projectDao.getAll(); - List<UserView> result = new ArrayList<UserView>(); + List<UserView> result = new ArrayList<>(); List<User> fullList = userDao.getAll(); for (User user : fullList) { result.add(userViewFactory.create(user, projects)); @@ -581,4 +581,13 @@ public class UserService implements IUserService { throw new SecurityException("You cannot access data of other users"); } } + + @Override + public List<User> getUsers(AuthenticationToken token) throws SecurityException { + if (userHasPrivilege(token, PrivilegeType.USER_MANAGEMENT)) { + return userDao.getAll(); + } else { + throw new SecurityException("You have no access to users data"); + } + } } diff --git a/service/src/main/java/lcsb/mapviewer/services/interfaces/IUserService.java b/service/src/main/java/lcsb/mapviewer/services/interfaces/IUserService.java index ad4c6dd627..f9bfadc911 100644 --- a/service/src/main/java/lcsb/mapviewer/services/interfaces/IUserService.java +++ b/service/src/main/java/lcsb/mapviewer/services/interfaces/IUserService.java @@ -256,4 +256,6 @@ public interface IUserService { boolean userHasPrivilege(AuthenticationToken token, PrivilegeType addMap); User getUserById(String creatorId, AuthenticationToken authenticationToken) throws SecurityException; + + List<User> getUsers(AuthenticationToken token) throws SecurityException; } -- GitLab