diff --git a/src/main/java/org/nrg/xapi/rest/users/UsersApi.java b/src/main/java/org/nrg/xapi/rest/users/UsersApi.java index 499f9298ed34d58d7093c9cb6df593cf7915b446..abcc0abddfda64b782196478e97e0723d1a12081 100644 --- a/src/main/java/org/nrg/xapi/rest/users/UsersApi.java +++ b/src/main/java/org/nrg/xapi/rest/users/UsersApi.java @@ -145,7 +145,7 @@ public class UsersApi extends AbstractXapiRestController { @RequestMapping(value = "active/{username}", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.GET) @ResponseBody public ResponseEntity<List<String>> getUserActiveSessions(@ApiParam(value = "ID of the user to fetch", required = true) @PathVariable("username") final String username) { - final HttpStatus status = isPermitted(); + final HttpStatus status = isPermitted(username); if (status != null) { return new ResponseEntity<>(status); } @@ -162,6 +162,7 @@ public class UsersApi extends AbstractXapiRestController { } return new ResponseEntity<>(sessionIds, HttpStatus.OK); } + return new ResponseEntity<>(HttpStatus.NOT_FOUND); } @@ -173,9 +174,11 @@ public class UsersApi extends AbstractXapiRestController { @ApiResponse(code = 500, message = "An unexpected error occurred.")}) @RequestMapping(value = "{username}", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.GET) public ResponseEntity<User> getUser(@ApiParam(value = "Username of the user to fetch.", required = true) @PathVariable("username") final String username) { - HttpStatus status = isPermitted(username); - if (status != null) { - return new ResponseEntity<>(status); + if (_preferences.getRestrictUserListAccessToAdmins()) { + final HttpStatus status = isPermitted(username); + if (status != null) { + return new ResponseEntity<>(status); + } } final UserI user; try { @@ -309,7 +312,7 @@ public class UsersApi extends AbstractXapiRestController { @ApiResponse(code = 403, message = "Not authorized to create or update this user."), @ApiResponse(code = 404, message = "User not found."), @ApiResponse(code = 500, message = "An unexpected error occurred.")}) - @RequestMapping(value = {"{username}", "active/{username}"}, produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.DELETE) + @RequestMapping(value = "active/{username}", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.DELETE) public ResponseEntity<List<String>> invalidateUser(final HttpSession current, @ApiParam(value = "The username of the user to invalidate.", required = true) @PathVariable("username") final String username) throws NotFoundException { HttpStatus status = isPermitted(username); if (status != null) { diff --git a/src/main/java/org/nrg/xnat/restlet/resources/SecureResource.java b/src/main/java/org/nrg/xnat/restlet/resources/SecureResource.java index eac158f40de1c6f094f52ccc887bc18cf19f32d4..c2b54b8a7ee2a03290e563681c009993d94cb2b6 100644 --- a/src/main/java/org/nrg/xnat/restlet/resources/SecureResource.java +++ b/src/main/java/org/nrg/xnat/restlet/resources/SecureResource.java @@ -10,7 +10,6 @@ */ package org.nrg.xnat.restlet.resources; -import com.fasterxml.jackson.core.type.TypeReference; import com.google.common.collect.Maps; import com.noelios.restlet.http.HttpConstants; import org.apache.commons.beanutils.BeanUtils; @@ -1564,11 +1563,13 @@ public abstract class SecureResource extends Resource { throw new RuntimeException(exception); } + final List<FilteredResourceHandlerI> handlerClasses = new ArrayList<>(); for (Class<?> clazz : classes) { if (FilteredResourceHandlerI.class.isAssignableFrom(clazz)) { - handlers.get(_package).add((FilteredResourceHandlerI) clazz.newInstance()); + handlerClasses.add((FilteredResourceHandlerI) clazz.newInstance()); } } + handlers.get(_package).addAll(handlerClasses); } }