Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 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 @@ -24,8 +24,7 @@ public final class OsfInstitutionUtils {

public final static String ORCID_SUFFIX = " (via ORCiD SSO)";

public static boolean validateInstitutionForLogin(final JpaOsfDao jpaOsfDao, final String id) {
final OsfInstitution institution = jpaOsfDao.findOneInstitutionById(id);
public static boolean validateInstitutionForLogin(final OsfInstitution institution) {
return institution != null
&& institution.getDelegationProtocol() != null
&& institution.getSsoAvailability() != SsoAvailability.UNAVAILABLE;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@ public abstract class OsfAbstractLoginPreparationAction extends AbstractAuthenti

protected static final String PARAMETER_LOGIN_CONTEXT = "osfCasLoginContext";

protected static final String PARAMETER_SERVICE = "service";

protected static final String PARAMETER_CAMPAIGN = "campaign";

protected static final String PARAMETER_CAMPAIGN_VALUE = "institution";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ protected Event doExecute(RequestContext context) {
loginContext = new OsfCasLoginContext(
institutionLogin,
institutionId,
Boolean.FALSE,
StringUtils.EMPTY,
unsupportedInstitutionLogin,
orcidRedirect,
Expand All @@ -80,6 +81,7 @@ protected Event doExecute(RequestContext context) {
} else {
loginContext.setInstitutionLogin(institutionLogin);
loginContext.setInstitutionId(institutionId);
loginContext.setHiddenSsoAvailability(false);
loginContext.setInstitutionSupportEmail(StringUtils.EMPTY);
loginContext.setUnsupportedInstitutionLogin(unsupportedInstitutionLogin);
loginContext.setOrcidLoginUrl(orcidLoginUrl);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import io.cos.cas.osf.authentication.support.OsfInstitutionUtils;
import io.cos.cas.osf.dao.JpaOsfDao;
import io.cos.cas.osf.model.OsfInstitution;
import io.cos.cas.osf.web.support.OsfCasLoginContext;

import lombok.extern.slf4j.Slf4j;
Expand Down Expand Up @@ -76,12 +77,16 @@ protected Event doExecute(RequestContext context) {
-> (OsfCasLoginContext) requestContext.getFlowScope().get(PARAMETER_LOGIN_CONTEXT)).orElse(null);
if (loginContext != null) {
institutionId = loginContext.getInstitutionId();
if (!OsfInstitutionUtils.validateInstitutionForLogin(jpaOsfDao, institutionId)) {
final OsfInstitution institution = jpaOsfDao.findOneInstitutionById(institutionId);
if (!OsfInstitutionUtils.validateInstitutionForLogin(institution)) {
loginContext.setInstitutionId(null);
context.getFlowScope().put(PARAMETER_LOGIN_CONTEXT, loginContext);
institutionId = null;
} else {
final String institutionSupportEmail = OsfInstitutionUtils.getInstitutionSupportEmail(jpaOsfDao, institutionId);
if (institution.getSsoAvailability().isHidden()) {
loginContext.setHiddenSsoAvailability(true);
}
final String institutionSupportEmail = institution.getSupportEmail();
if (institutionSupportEmail != null) {
loginContext.setInstitutionSupportEmail(institutionSupportEmail);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ public class OsfCasLoginContext implements Serializable {

private String institutionId;

private boolean hiddenSsoAvailability;

private String institutionSupportEmail;

private boolean unsupportedInstitutionLogin;
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/messages.properties
Original file line number Diff line number Diff line change
Expand Up @@ -611,6 +611,7 @@ screen.institutionlogin.message.auto=Your institution has partnered with OSF. Pl
screen.institutionlogin.heading.select=Your institution
screen.institutionlogin.heading.auto=Your institution
screen.institutionlogin.link.select=Not your institution?
screen.institutionlogin.link.hidden=Note: Your institution is currently being set up and may not be available. Please check back at a later date.
screen.institutionlogin.link.unsupported=I can't find my institution
screen.institutionlogin.button.submit=Sign in
screen.institutionlogin.osf=Sign in with email
Expand Down
4 changes: 4 additions & 0 deletions src/main/resources/templates/casInstitutionLoginView.html
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ <h1 th:utext="#{screen.institutionlogin.heading}"></h1>
</select>
</section>

<section class="text-with-mdi text-danger">
<p th:if="${osfCasLoginContext.institutionId != null AND osfCasLoginContext.hiddenSsoAvailability}" th:utext="#{screen.institutionlogin.link.hidden}"></p>
</section>

<section class="text-with-mdi">
<span th:if="${osfCasLoginContext.institutionId}">
<a th:href="@{/login(campaign=institution, institutionId=${institutionId ?: ''}, service=${service?.originalUrl ?: ''})}" th:utext="#{screen.institutionlogin.link.select}"></a>
Expand Down
Loading