summaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
Diffstat (limited to 'client')
-rw-r--r--client/components/main/layouts.jade1
-rw-r--r--client/components/main/layouts.js41
-rw-r--r--client/components/settings/connectionMethod.jade6
-rw-r--r--client/components/settings/connectionMethod.js34
4 files changed, 81 insertions, 1 deletions
diff --git a/client/components/main/layouts.jade b/client/components/main/layouts.jade
index ac7da3af..68876dc5 100644
--- a/client/components/main/layouts.jade
+++ b/client/components/main/layouts.jade
@@ -18,6 +18,7 @@ template(name="userFormsLayout")
img(src="{{pathFor '/wekan-logo.png'}}" alt="Wekan")
section.auth-dialog
+Template.dynamic(template=content)
+ +connectionMethod
if isCas
.at-form
button#cas(class='at-btn submit' type='submit') {{casSignInLabel}}
diff --git a/client/components/main/layouts.js b/client/components/main/layouts.js
index 6d6e616d..1d3c3690 100644
--- a/client/components/main/layouts.js
+++ b/client/components/main/layouts.js
@@ -39,7 +39,7 @@ Template.userFormsLayout.helpers({
const curLang = T9n.getLanguage() || 'en';
return t9nTag === curLang;
},
-
+/*
isCas() {
return Meteor.settings.public &&
Meteor.settings.public.cas &&
@@ -49,6 +49,7 @@ Template.userFormsLayout.helpers({
casSignInLabel() {
return TAPi18n.__('casSignIn', {}, T9n.getLanguage() || 'en');
},
+*/
});
Template.userFormsLayout.events({
@@ -64,6 +65,44 @@ Template.userFormsLayout.events({
}
});
},
+ 'submit form'(event) {
+ const connectionMethod = $('.select-connection').val();
+
+ // Local account
+ if (connectionMethod === 'default') {
+ return;
+ }
+
+ // TODO : find a way to block "submit #at-pwd-form" of the at_pwd_form.js
+
+ const inputs = event.target.getElementsByTagName('input');
+
+ const email = inputs.namedItem('at-field-username_and_email').value;
+ const password = inputs.namedItem('at-field-password').value;
+
+ // Ldap account
+ if (connectionMethod === 'ldap') {
+ // Check if the user can use the ldap connection
+ Meteor.subscribe('user-connection-method', email, {
+ onReady() {
+ const ldap = Users.findOne();
+
+ if (ldap) {
+ // Use the ldap connection package
+ Meteor.loginWithLDAP(email, password, function(error) {
+ if (!error) {
+ // Connection
+ return FlowRouter.go('/');
+ } else {
+ return error;
+ }
+ });
+ }
+ return this.stop();
+ },
+ });
+ }
+ },
});
Template.defaultLayout.events({
diff --git a/client/components/settings/connectionMethod.jade b/client/components/settings/connectionMethod.jade
new file mode 100644
index 00000000..598dd9dd
--- /dev/null
+++ b/client/components/settings/connectionMethod.jade
@@ -0,0 +1,6 @@
+template(name='connectionMethod')
+ div.at-form-connection
+ label Authentication method
+ select.select-connection
+ each connections
+ option(value="{{value}}") {{_ value}}
diff --git a/client/components/settings/connectionMethod.js b/client/components/settings/connectionMethod.js
new file mode 100644
index 00000000..4983a3ef
--- /dev/null
+++ b/client/components/settings/connectionMethod.js
@@ -0,0 +1,34 @@
+Template.connectionMethod.onCreated(function() {
+ this.connectionMethods = new ReactiveVar([]);
+
+ Meteor.call('getConnectionsEnabled', (_, result) => {
+ if (result) {
+ // TODO : add a management of different languages
+ // (ex {value: ldap, text: TAPi18n.__('ldap', {}, T9n.getLanguage() || 'en')})
+ this.connectionMethods.set([
+ {value: 'default'},
+ // Gets only the connection methods availables
+ ...Object.entries(result).filter((e) => e[1]).map((e) => ({value: e[0]})),
+ ]);
+ }
+
+ // If only the default authentication available, hides the select boxe
+ const content = $('.at-form-connection');
+ if (!(this.connectionMethods.get().length > 1)) {
+ content.hide();
+ } else {
+ content.show();
+ }
+ });
+});
+
+Template.connectionMethod.onRendered(() => {
+ // Moves the select boxe in the first place of the at-pwd-form div
+ $('.at-form-connection').detach().prependTo('.at-pwd-form');
+});
+
+Template.connectionMethod.helpers({
+ connections() {
+ return Template.instance().connectionMethods.get();
+ },
+});