public static Permissions getPermissions(SolrDocument doc) { Permissions permissions = new Permissions(); EnumMap<PermissionType, Set<String>> userPermissions = new EnumMap<>(PermissionType.class); for (PermissionType type : PermissionType.values()) { String key = RodaConstants.INDEX_PERMISSION_USERS_PREFIX + type; Set<String> users = new HashSet<>(); users.addAll(objectToListString(doc.get(key))); userPermissions.put(type, users); } EnumMap<PermissionType, Set<String>> groupPermissions = new EnumMap<>(PermissionType.class); for (PermissionType type : PermissionType.values()) { String key = RodaConstants.INDEX_PERMISSION_GROUPS_PREFIX + type; Set<String> groups = new HashSet<>(); groups.addAll(objectToListString(doc.get(key))); groupPermissions.put(type, groups); } permissions.setUsers(userPermissions); permissions.setGroups(groupPermissions); return permissions; }
PermissionType permissionType = PermissionType.valueOf(configValue); checkObjectPermissions(user, objs, permissionType); } catch (IllegalArgumentException e) {
PermissionType type = PermissionType.valueOf(permissionType.toUpperCase()); hasPermission = userPermissions.contains(type); } else if (AIP.class.getName().equals(objectClass)) { PermissionType type = PermissionType.valueOf(permissionType.toUpperCase()); hasPermission = userPermissions.contains(type); } else {
PermissionType permissionType = PermissionType.valueOf(configValue); checkObjectPermissions(user, obj, permissionType); } catch (IllegalArgumentException e) {
public static boolean hasPermissions(User user, List<String> methods, Permissions permissions) { boolean canAct = true; for (String method : methods) { canAct &= user.hasRole(RodaCoreFactory.getRodaConfigurationAsString("core.roles." + method)); String permissionKey = RodaCoreFactory.getRodaConfigurationAsString("core.permissions." + method); if (canAct && permissions != null && permissionKey != null) { PermissionType permissionType = PermissionType.valueOf(permissionKey); if (permissionType != null) { if (permissions.getUserPermissions(user.getName()).contains(permissionType)) { canAct = true; } else { boolean containGroup = false; for (String group : user.getGroups()) { if (permissions.getGroupPermissions(group).contains(permissionType)) { containGroup = true; break; } } canAct = containGroup; } } } } return canAct; } }
private void init(Map<PermissionType, Set<String>> permissionsMap) { for (PermissionType type : PermissionType.values()) { permissionsMap.put(type, new HashSet<String>()); } }