@JsonIgnore @Override public String getUUID() { return getId(); }
public IndexedDIP(IndexedDIP dip) { super(dip); this.openExternalURL = dip.getOpenExternalURL(); }
@Override public IndexedDIP fromSolrDocument(SolrDocument doc, List<String> fieldsToReturn) throws GenericException { IndexedDIP dip = super.fromSolrDocument(doc, fieldsToReturn); dip.setTitle(SolrUtils.objectToString(doc.get(RodaConstants.DIP_TITLE), null)); dip.setDescription(SolrUtils.objectToString(doc.get(RodaConstants.DIP_DESCRIPTION), null)); dip.setType(SolrUtils.objectToString(doc.get(RodaConstants.DIP_TYPE), null)); dip.setDateCreated(SolrUtils.objectToDate(doc.get(RodaConstants.DIP_DATE_CREATED))); dip.setLastModified(SolrUtils.objectToDate(doc.get(RodaConstants.DIP_LAST_MODIFIED))); dip.setIsPermanent(SolrUtils.objectToBoolean(doc.get(RodaConstants.DIP_IS_PERMANENT), Boolean.FALSE)); dip.setProperties(JsonUtils.getMapFromJson(SolrUtils.objectToString(doc.get(RodaConstants.DIP_PROPERTIES), ""))); if (emptyFields || fieldsToReturn.contains(RodaConstants.DIP_AIP_IDS)) { String aipIds = SolrUtils.objectToString(doc.get(RodaConstants.DIP_AIP_IDS), null); dip.setAipIds(JsonUtils.getListFromJson(aipIds == null ? "" : aipIds, AIPLink.class)); dip.setRepresentationIds( JsonUtils.getListFromJson(representationIds == null ? "" : representationIds, RepresentationLink.class)); dip.setFileIds(JsonUtils.getListFromJson(fileIds == null ? "" : fileIds, FileLink.class)); dip.setPermissions(SolrUtils.getPermissions(doc)); dip.setOpenExternalURL(SolrUtils.objectToString(doc.get(RodaConstants.DIP_OPEN_EXTERNAL_URL), null)); return dip;
public static void checkDIPPermissions(User user, IndexedDIP dip, PermissionType permissionType) throws AuthorizationDeniedException { if (isAdministrator(user)) { return; } Set<String> users = dip.getPermissions().getUsers().get(permissionType); Set<String> groups = dip.getPermissions().getGroups().get(permissionType); LOGGER.debug("Checking if user '{}' has permissions to {} dip {} (object read permissions: {} & {})", user.getId(), permissionType, dip.getId(), users, groups); if (!users.contains(user.getId()) && iterativeDisjoint(groups, user.getGroups())) { throw new AuthorizationDeniedException( "The user '" + user.getId() + "' does not have permissions to " + permissionType); } }
private static <T extends IsIndexed> void checkDIPObjectPermissions(User user, T obj, Function<T, String> toDIP, PermissionType permissionType) throws AuthorizationDeniedException { if (isAdministrator(user)) { return; } String dipId = toDIP.apply(obj); IndexedDIP dip; try { dip = RodaCoreFactory.getIndexService().retrieve(IndexedDIP.class, dipId, RodaConstants.DIP_PERMISSIONS_FIELDS_TO_RETURN); } catch (NotFoundException | GenericException e) { throw new AuthorizationDeniedException("Could not check permissions of object " + obj, e); } Set<String> users = dip.getPermissions().getUsers().get(permissionType); Set<String> groups = dip.getPermissions().getGroups().get(permissionType); LOGGER.debug("Checking if user '{}' has permissions to {} object {} (object read permissions: {} & {})", user.getId(), permissionType, dip.getId(), users, groups); if (!users.contains(user.getId()) && iterativeDisjoint(groups, user.getGroups())) { throw new AuthorizationDeniedException( "The user '" + user.getId() + "' does not have permissions to " + permissionType); } }