Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import java.util.Map;

/**
* This is {@link OsfInstitutionUtils}.
* This is {@link OsfInstitutionUtils}, which provides helper methods supporting the institution SSO login flow.
*
* @author Longze Chen
* @since 21.0.0
Expand Down Expand Up @@ -52,6 +52,25 @@ public static Map<String, String> getInstitutionLoginUrlMap(
}
final Map<String, String> institutionLoginUrlMap = new HashMap<>();
for (final OsfInstitution institution: institutionList) {
final SsoAvailability ssoAvailability = institution.getSsoAvailability();
if (ssoAvailability == null) {
// Catch a rare exception case where OSF DB has changed the choices of the field
// `sso_availability` in table `osf_institution` without syncing with CAS.
LOGGER.error(
"Skipped due to invalid SSO Availability: [institutionId={}]",
institution.getInstitutionId()
);
continue;
}
if (!ssoAvailability.isPublic()) {
// Hide institutions of which SSO Availability is not Public
LOGGER.debug(
"Skipped because SSO Availability is not public: [institutionId={}, ssoAvailability={}]",
institution.getInstitutionId(),
ssoAvailability.getId()
);
continue;
}
final DelegationProtocol delegationProtocol = institution.getDelegationProtocol();
if (DelegationProtocol.SAML_SHIB.equals(delegationProtocol)) {
institutionLoginUrlMap.put(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package io.cos.cas.osf.authentication.support;

/**
* This is {@link SsoAvailability}.
* This is {@link SsoAvailability}, which is used in {@link io.cos.cas.osf.model.OsfInstitution}
* to map to the types/choices of its counterpart in the OSF model.
*
* @author Longze Chen
* @since 26.1.0
Expand Down Expand Up @@ -40,6 +41,13 @@ public static SsoAvailability getType(final String id) throws IllegalArgumentExc
throw new IllegalArgumentException("No matching type for id " + id);
}

/**
* @return whether the enum type is {@link SsoAvailability#PUBLIC}.
*/
public boolean isPublic () {
return SsoAvailability.PUBLIC.equals(this);
}

public final String getId() {
return id;
}
Expand Down
Loading