diff --git a/src/main/java/de/thm/arsnova/controller/LoginController.java b/src/main/java/de/thm/arsnova/controller/LoginController.java index 1f19f59d11201d8bd10bd7059323c1298cd0d8c4..98ee6c31870e07a9db6378d7c3dcde043816a0e6 100644 --- a/src/main/java/de/thm/arsnova/controller/LoginController.java +++ b/src/main/java/de/thm/arsnova/controller/LoginController.java @@ -77,31 +77,39 @@ public class LoginController extends AbstractController { @Value("${security.guest.enabled}") private String guestEnabled; @Value("${security.guest.lecturer.enabled}") private String guestLecturerEnabled; + @Value("${security.guest.order}") private int guestOrder; @Value("${security.custom-login.enabled}") private String customLoginEnabled; @Value("${security.custom-login.title:University}") private String customLoginTitle; @Value("${security.custom-login.login-dialog-path}") private String customLoginDialog; @Value("${security.custom-login.image:}") private String customLoginImage; + @Value("${security.custom-login.order}") private int customLoginOrder; @Value("${security.user-db.enabled}") private String dbAuthEnabled; @Value("${security.user-db.title:ARSnova}") private String dbAuthTitle; @Value("${security.user-db.login-dialog-path}") private String dbAuthDialog; @Value("${security.user-db.image:}") private String dbAuthImage; + @Value("${security.user-db.order}") private int dbAuthOrder; @Value("${security.ldap.enabled}") private String ldapEnabled; @Value("${security.ldap.title:LDAP}") private String ldapTitle; @Value("${security.ldap.login-dialog-path}") private String ldapDialog; @Value("${security.ldap.image:}") private String ldapImage; + @Value("${security.ldap.order}") private int ldapOrder; @Value("${security.cas.enabled}") private String casEnabled; @Value("${security.cas.title:CAS}") private String casTitle; @Value("${security.cas.image:}") private String casImage; + @Value("${security.cas.order}") private int casOrder; @Value("${security.facebook.enabled}") private String facebookEnabled; + @Value("${security.facebook.order}") private int facebookOrder; @Value("${security.google.enabled}") private String googleEnabled; + @Value("${security.google.order}") private int googleOrder; @Value("${security.twitter.enabled}") private String twitterEnabled; + @Value("${security.twitter.order}") private int twitterOrder; @Autowired private DaoAuthenticationProvider daoProvider; @@ -292,6 +300,7 @@ public class LoginController extends AbstractController { "Guest", null ); + sdesc.setOrder(guestOrder); if (!"true".equals(guestLecturerEnabled)) { sdesc.setAllowLecturer(false); } @@ -299,62 +308,76 @@ public class LoginController extends AbstractController { } if ("true".equals(customLoginEnabled) && !"".equals(customLoginDialog)) { - services.add(new ServiceDescription( + ServiceDescription sdesc = new ServiceDescription( "custom", customLoginTitle, customizationPath + "/" + customLoginDialog + "?redirect={0}", customLoginImage - )); + ); + sdesc.setOrder(customLoginOrder); + services.add(sdesc); } if ("true".equals(dbAuthEnabled) && !"".equals(dbAuthDialog)) { - services.add(new ServiceDescription( + ServiceDescription sdesc = new ServiceDescription( "arsnova", dbAuthTitle, customizationPath + "/" + dbAuthDialog + "?redirect={0}", dbAuthImage - )); + ); + sdesc.setOrder(dbAuthOrder); + services.add(sdesc); } if ("true".equals(ldapEnabled) && !"".equals(ldapDialog)) { - services.add(new ServiceDescription( + ServiceDescription sdesc = new ServiceDescription( "ldap", ldapTitle, customizationPath + "/" + ldapDialog + "?redirect={0}", ldapImage - )); + ); + sdesc.setOrder(ldapOrder); + services.add(sdesc); } if ("true".equals(casEnabled)) { - services.add(new ServiceDescription( + ServiceDescription sdesc = new ServiceDescription( "cas", casTitle, MessageFormat.format(dialogUrl, "cas") - )); + ); + sdesc.setOrder(casOrder); + services.add(sdesc); } if ("true".equals(facebookEnabled)) { - services.add(new ServiceDescription( + ServiceDescription sdesc = new ServiceDescription( "facebook", "Facebook", MessageFormat.format(dialogUrl, "facebook") - )); + ); + sdesc.setOrder(facebookOrder); + services.add(sdesc); } if ("true".equals(googleEnabled)) { - services.add(new ServiceDescription( + ServiceDescription sdesc = new ServiceDescription( "google", "Google", MessageFormat.format(dialogUrl, "google") - )); + ); + sdesc.setOrder(googleOrder); + services.add(sdesc); } if ("true".equals(twitterEnabled)) { - services.add(new ServiceDescription( + ServiceDescription sdesc = new ServiceDescription( "twitter", "Twitter", MessageFormat.format(dialogUrl, "twitter") - )); + ); + sdesc.setOrder(twitterOrder); + services.add(sdesc); } return services; diff --git a/src/main/java/de/thm/arsnova/entities/ServiceDescription.java b/src/main/java/de/thm/arsnova/entities/ServiceDescription.java index 8f0e3717e51a85472f08018204c8dd9910122768..f9199ac039a0917062dd4c2c1e6b9528f2013ad1 100644 --- a/src/main/java/de/thm/arsnova/entities/ServiceDescription.java +++ b/src/main/java/de/thm/arsnova/entities/ServiceDescription.java @@ -5,6 +5,7 @@ public class ServiceDescription { private String name; private String dialogUrl; private String image; + private int order = 0; private boolean allowLecturer = true; public ServiceDescription(String id, String name, String dialogUrl) { @@ -61,6 +62,14 @@ public class ServiceDescription { this.image = image; } + public int getOrder() { + return order; + } + + public void setOrder(int order) { + this.order = order; + } + public boolean isAllowLecturer() { return allowLecturer; } diff --git a/src/main/webapp/arsnova.properties.example b/src/main/webapp/arsnova.properties.example index 9280bdd817f2934a32ba2a836da1ad0563de4367..5e95205527ae416118e682ce3e56d3fa1628003e 100644 --- a/src/main/webapp/arsnova.properties.example +++ b/src/main/webapp/arsnova.properties.example @@ -63,6 +63,7 @@ security.custom-login.enabled=false security.custom-login.title=University security.custom-login.login-dialog-path= security.custom-login.image= +security.custom-login.order=0 # Internal authentication # @@ -81,6 +82,7 @@ security.user-db.login-dialog-path=account.html security.user-db.activation-path=account.html security.user-db.reset-password-path=account.html security.user-db.image= +security.user-db.order=0 security.user-db.allowed-email-domains=* security.user-db.registration-mail.subject=ARSnova Registration security.user-db.registration-mail.body=Welcome to ARSnova!\n\nPlease confirm \ @@ -101,6 +103,7 @@ security.ldap.enabled=true security.ldap.title=LDAP security.ldap.login-dialog-path=login-ldap.html security.ldap.image= +security.ldap.order=0 security.ldap.url=ldap://example.com:33389/dc=example,dc=com security.ldap.user-dn-pattern=uid={0},ou=arsnova # Not yet implemented parameters @@ -112,6 +115,7 @@ security.ldap.user-dn-pattern=uid={0},ou=arsnova security.cas.enabled=true security.cas.title=CAS security.cas.image= +security.cas.order=0 security.cas-server-url=https://example.com/cas # OAuth authentication with third party services @@ -122,18 +126,21 @@ security.cas-server-url=https://example.com/cas # Facebook # security.facebook.enabled=true +security.facebook.order=0 security.facebook.key= security.facebook.secret= # Twitter # security.twitter.enabled=true +security.twitter.order=0 security.twitter.key= security.twitter.secret= # Google # security.google.enabled=true +security.google.order=0 security.google.key= security.google.secret= diff --git a/src/test/resources/arsnova.properties.example b/src/test/resources/arsnova.properties.example index 9280bdd817f2934a32ba2a836da1ad0563de4367..5e95205527ae416118e682ce3e56d3fa1628003e 100644 --- a/src/test/resources/arsnova.properties.example +++ b/src/test/resources/arsnova.properties.example @@ -63,6 +63,7 @@ security.custom-login.enabled=false security.custom-login.title=University security.custom-login.login-dialog-path= security.custom-login.image= +security.custom-login.order=0 # Internal authentication # @@ -81,6 +82,7 @@ security.user-db.login-dialog-path=account.html security.user-db.activation-path=account.html security.user-db.reset-password-path=account.html security.user-db.image= +security.user-db.order=0 security.user-db.allowed-email-domains=* security.user-db.registration-mail.subject=ARSnova Registration security.user-db.registration-mail.body=Welcome to ARSnova!\n\nPlease confirm \ @@ -101,6 +103,7 @@ security.ldap.enabled=true security.ldap.title=LDAP security.ldap.login-dialog-path=login-ldap.html security.ldap.image= +security.ldap.order=0 security.ldap.url=ldap://example.com:33389/dc=example,dc=com security.ldap.user-dn-pattern=uid={0},ou=arsnova # Not yet implemented parameters @@ -112,6 +115,7 @@ security.ldap.user-dn-pattern=uid={0},ou=arsnova security.cas.enabled=true security.cas.title=CAS security.cas.image= +security.cas.order=0 security.cas-server-url=https://example.com/cas # OAuth authentication with third party services @@ -122,18 +126,21 @@ security.cas-server-url=https://example.com/cas # Facebook # security.facebook.enabled=true +security.facebook.order=0 security.facebook.key= security.facebook.secret= # Twitter # security.twitter.enabled=true +security.twitter.order=0 security.twitter.key= security.twitter.secret= # Google # security.google.enabled=true +security.google.order=0 security.google.key= security.google.secret=