InstitutionAdmin.java
package access.security;
import access.model.User;
import lombok.Getter;
import lombok.Setter;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@Getter
@Setter
@SuppressWarnings("unchecked")
public class InstitutionAdmin {
public static final String INSTITUTION_ADMIN = "INSTITUTION_ADMIN";
public static final String ORGANIZATION_GUID = "ORGANIZATION_GUID";
public static final String INSTITUTION = "INSTITUTION";
public static final String IDENTITY_PROVIDER = "IDENTITY_PROVIDER";
private InstitutionAdmin() {
}
public static boolean isInstitutionAdmin(Map<String, Object> attributes,
String requiredEntitlement) {
if (attributes.containsKey("eduperson_entitlement")) {
List<String> entitlements = (List<String>) attributes.get("eduperson_entitlement");
return entitlements.stream().anyMatch(entitlement -> entitlement.equalsIgnoreCase(requiredEntitlement));
}
return false;
}
public static boolean isInstitutionAdmin(User user) {
return StringUtils.hasText(user.getOrganizationGUID()) && user.isInstitutionAdmin();
}
public static Optional<String> getOrganizationGuid(Map<String, Object> attributes,
String organizationGuidPrefix,
Optional<User> optionalUser) {
if (attributes.containsKey("eduperson_entitlement")) {
List<String> entitlements = (List<String>) attributes.get("eduperson_entitlement");
final String organizationGuidPrefixLower = organizationGuidPrefix.toLowerCase();
return entitlements.stream()
.filter(entitlement -> entitlement.toLowerCase().startsWith(organizationGuidPrefixLower))
.map(entitlement -> entitlement.substring(organizationGuidPrefix.length()))
.filter(StringUtils::hasText)
.findFirst();
}
return optionalUser.map(User::getOrganizationGUID)
.filter(StringUtils::hasText);
}
}