All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.molgenis.data.security.permission.PermissionSetUtils Maven / Gradle / Ivy

The newest version!
package org.molgenis.data.security.permission;

import static java.lang.String.format;
import static org.molgenis.security.core.PermissionSet.COUNT_MASK;
import static org.molgenis.security.core.PermissionSet.READ_MASK;
import static org.molgenis.security.core.PermissionSet.READ_META_MASK;
import static org.molgenis.security.core.PermissionSet.WRITEMETA_MASK;
import static org.molgenis.security.core.PermissionSet.WRITE_MASK;

import java.util.Optional;
import org.molgenis.data.security.permission.model.LabelledPermission;
import org.molgenis.security.core.PermissionSet;
import org.springframework.security.acls.model.AccessControlEntry;

public class PermissionSetUtils {
  public static final String READMETA = "READMETA";
  public static final String COUNT = "COUNT";
  public static final String READ = "READ";
  public static final String WRITE = "WRITE";
  public static final String WRITEMETA = "WRITEMETA";
  public static final String UNEXPECTED_MASK_MESSAGE = "Unexpected mask '%d'";

  private PermissionSetUtils() {}

  public static PermissionSet getPermissionSet(AccessControlEntry accessControlEntry) {
    int mask = accessControlEntry.getPermission().getMask();
    switch (mask) {
      case READ_META_MASK:
        return PermissionSet.READMETA;
      case COUNT_MASK:
        return PermissionSet.COUNT;
      case READ_MASK:
        return PermissionSet.READ;
      case WRITE_MASK:
        return PermissionSet.WRITE;
      case WRITEMETA_MASK:
        return PermissionSet.WRITEMETA;
      default:
        throw new IllegalArgumentException(format(UNEXPECTED_MASK_MESSAGE, mask));
    }
  }

  public static PermissionSet paramValueToPermissionSet(String paramValue) {
    switch (paramValue.toUpperCase()) {
      case READMETA:
        return PermissionSet.READMETA;
      case COUNT:
        return PermissionSet.COUNT;
      case READ:
        return PermissionSet.READ;
      case WRITE:
        return PermissionSet.WRITE;
      case WRITEMETA:
        return PermissionSet.WRITEMETA;
      default:
        throw new IllegalArgumentException(format("Unknown PermissionSet '%s'", paramValue));
    }
  }

  public static Optional getPermissionStringValue(LabelledPermission labelledPermission) {
    PermissionSet permissionSet = labelledPermission.getPermission();
    String permissionStringValue = getPermissionStringValue(permissionSet);
    return Optional.ofNullable(permissionStringValue);
  }

  public static String getPermissionStringValue(PermissionSet permissionSet) {
    if (permissionSet != null) {
      int mask = permissionSet.getMask();
      switch (mask) {
        case READ_META_MASK:
          return READMETA;
        case COUNT_MASK:
          return COUNT;
        case READ_MASK:
          return READ;
        case WRITE_MASK:
          return WRITE;
        case WRITEMETA_MASK:
          return WRITEMETA;
        default:
          throw new IllegalArgumentException(format(UNEXPECTED_MASK_MESSAGE, mask));
      }
    }
    return null;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy