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 ee5dfd2b194702d51464a72f7d16537ed72c7e29..41b26a7ef9715f951922ae7dbfb9010a54819ea3 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 @@ -26,7 +26,7 @@ import lcsb.mapviewer.services.view.AuthenticationToken; @Transactional(value = "txManager") public class UserRestImpl extends BaseRestImpl { - Logger logger = Logger.getLogger(UserRestImpl.class); + Logger logger = Logger.getLogger(UserRestImpl.class); @Autowired private ILayoutService layoutService; @@ -184,25 +184,21 @@ public class UserRestImpl extends BaseRestImpl { Object value = privilegesData.get(key); PrivilegeType type = PrivilegeType.valueOf(key); - Integer objectId = null; - Object privilegeToSet = null; + if (type.getPrivilegeClassType().equals(BasicPrivilege.class)) { - privilegeToSet = value; + getUserService().setUserPrivilege(modifiedUser, type, value, authenticationToken); } else if (type.getPrivilegeClassType().equals(ObjectPrivilege.class)) { if (value instanceof Map) { - privilegeToSet = ((Map<?, ?>) value).get(value); - objectId = (Integer) ((Map<?, ?>) value).get(objectId); + Map<?, ?> objects = (Map<?, ?>) value; + for (Object objectId : objects.keySet()) { + getUserService().setUserPrivilege(modifiedUser, type, objects.get(objectId), Integer.valueOf((String) objectId), authenticationToken); + } } else { throw new QueryException("Invalid value for privilege: " + key); } } else { throw new QueryException("Unknown privilege type: " + key); } - if (objectId == null) { - getUserService().setUserPrivilege(modifiedUser, type, privilegeToSet, authenticationToken); - } else { - getUserService().setUserPrivilege(modifiedUser, type, privilegeToSet, objectId, authenticationToken); - } } return getUser(token, login, "");