From 3b4f285fea4a90ee96bfce855e1539adcec9b7aa Mon Sep 17 00:00:00 2001 From: guillaume Date: Tue, 9 Oct 2018 14:14:39 +0200 Subject: add ldap support | simplify authentications --- client/components/main/layouts.js | 48 ++++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 16 deletions(-) (limited to 'client/components/main') diff --git a/client/components/main/layouts.js b/client/components/main/layouts.js index 1d3c3690..6d1f95d4 100644 --- a/client/components/main/layouts.js +++ b/client/components/main/layouts.js @@ -6,7 +6,23 @@ const i18nTagToT9n = (i18nTag) => { return i18nTag; }; +const validator = { + set: function(obj, prop, value) { + if (prop === 'state' && value !== 'signIn') { + $('.at-form-authentication').hide(); + } else if (prop === 'state' && value === 'signIn') { + $('.at-form-authentication').show(); + } + // The default behavior to store the value + obj[prop] = value; + // Indicate success + return true; + } +}; + Template.userFormsLayout.onRendered(() => { + AccountsTemplates.state.form.keys = new Proxy(AccountsTemplates.state.form.keys, validator); + const i18nTag = navigator.language; if (i18nTag) { T9n.setLanguage(i18nTagToT9n(i18nTag)); @@ -65,37 +81,37 @@ Template.userFormsLayout.events({ } }); }, - 'submit form'(event) { - const connectionMethod = $('.select-connection').val(); - + 'click #at-btn'(event) { + /* All authentication method can be managed/called here. + !! DON'T FORGET to correctly fill the fields of the user during its creation if necessary authenticationMethod : String !! + */ + const authenticationMethodSelected = $('.select-authentication').val(); // Local account - if (connectionMethod === 'default') { + if (authenticationMethodSelected === 'password') { return; } - // TODO : find a way to block "submit #at-pwd-form" of the at_pwd_form.js + // Stop submit #at-pwd-form + event.preventDefault(); + event.stopImmediatePropagation(); - const inputs = event.target.getElementsByTagName('input'); - - const email = inputs.namedItem('at-field-username_and_email').value; - const password = inputs.namedItem('at-field-password').value; + const email = $('#at-field-username_and_email').val(); + const password = $('#at-field-password').val(); // Ldap account - if (connectionMethod === 'ldap') { + if (authenticationMethodSelected === 'ldap') { // Check if the user can use the ldap connection - Meteor.subscribe('user-connection-method', email, { + Meteor.subscribe('user-authenticationMethod', email, { onReady() { - const ldap = Users.findOne(); - - if (ldap) { + const user = Users.findOne(); + if (user === undefined || user.authenticationMethod === 'ldap') { // Use the ldap connection package Meteor.loginWithLDAP(email, password, function(error) { if (!error) { // Connection return FlowRouter.go('/'); - } else { - return error; } + return error; }); } return this.stop(); -- cgit v1.2.3-1-g7c22