diff --git a/src/main/java/edu/harvard/iq/dataverse/LoginPage.java b/src/main/java/edu/harvard/iq/dataverse/LoginPage.java index b705cca6cf5..5bafe204177 100644 --- a/src/main/java/edu/harvard/iq/dataverse/LoginPage.java +++ b/src/main/java/edu/harvard/iq/dataverse/LoginPage.java @@ -8,6 +8,7 @@ import edu.harvard.iq.dataverse.authorization.CredentialsAuthenticationProvider; import edu.harvard.iq.dataverse.authorization.exceptions.AuthenticationFailedException; import edu.harvard.iq.dataverse.authorization.providers.builtin.BuiltinUserServiceBean; +import edu.harvard.iq.dataverse.authorization.providers.shib.ShibAuthenticationProvider; import edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser; import edu.harvard.iq.dataverse.settings.SettingsServiceBean; import edu.harvard.iq.dataverse.util.BundleUtil; @@ -128,9 +129,17 @@ public List listCredentialsAuthenticationProv public List listAuthenticationProviders() { List infos = new LinkedList<>(); - for ( String id : authSvc.getAuthenticationProviderIds() ) { + for (String id : authSvc.getAuthenticationProviderIdsSorted()) { AuthenticationProvider authenticationProvider = authSvc.getAuthenticationProvider(id); - infos.add( authenticationProvider.getInfo()); + if (authenticationProvider != null) { + if (ShibAuthenticationProvider.PROVIDER_ID.equals(authenticationProvider.getId())) { + if (systemConfig.isShibEnabled()) { + infos.add(authenticationProvider.getInfo()); + } + } else { + infos.add(authenticationProvider.getInfo()); + } + } } return infos; } diff --git a/src/main/java/edu/harvard/iq/dataverse/authorization/AuthenticationServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/authorization/AuthenticationServiceBean.java index 74506f93c38..17ec4db2f99 100644 --- a/src/main/java/edu/harvard/iq/dataverse/authorization/AuthenticationServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/authorization/AuthenticationServiceBean.java @@ -17,6 +17,8 @@ import edu.harvard.iq.dataverse.authorization.providers.echo.EchoAuthenticationProviderFactory; import edu.harvard.iq.dataverse.authorization.providers.oauth2.AbstractOAuth2AuthenticationProvider; import edu.harvard.iq.dataverse.authorization.providers.oauth2.OAuth2AuthenticationProviderFactory; +import edu.harvard.iq.dataverse.authorization.providers.oauth2.impl.GitHubOAuth2AP; +import edu.harvard.iq.dataverse.authorization.providers.oauth2.impl.GoogleOAuth2AP; import edu.harvard.iq.dataverse.authorization.providers.shib.ShibAuthenticationProvider; import edu.harvard.iq.dataverse.authorization.users.ApiToken; import edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser; @@ -26,6 +28,7 @@ import edu.harvard.iq.dataverse.passwordreset.PasswordResetServiceBean; import edu.harvard.iq.dataverse.util.BundleUtil; import java.sql.Timestamp; +import java.util.Arrays; import java.util.Calendar; import java.util.Collection; import java.util.Date; @@ -834,4 +837,21 @@ public AuthenticatedUser canLogInAsBuiltinUser(String username, String password) } } + public List getAuthenticationProviderIdsSorted() { + GitHubOAuth2AP github = new GitHubOAuth2AP(null, null); + GoogleOAuth2AP google = new GoogleOAuth2AP(null, null); + /** + * @todo Stop hard-coding the magic strings "orcid" and "orcid-sandbox" + * below. Centralize them as static. + */ + return Arrays.asList( + BuiltinAuthenticationProvider.PROVIDER_ID, + ShibAuthenticationProvider.PROVIDER_ID, + "orcid", + "orcid-sandbox", + github.getId(), + google.getId() + ); + } + }