diff options
author | Lauri Ojansivu <x@xet7.org> | 2018-11-17 16:50:42 +0200 |
---|---|---|
committer | Lauri Ojansivu <x@xet7.org> | 2018-11-17 16:50:42 +0200 |
commit | aa691b0af105c8dbc5443b1e0823a701e53c3871 (patch) | |
tree | 7f76c9e79c6da428d85160ea9108d586a0e560f8 /client/components/main | |
parent | 7a75d821147c7d9e2ad48b212348c4bf2d4db063 (diff) | |
download | wekan-aa691b0af105c8dbc5443b1e0823a701e53c3871.tar.gz wekan-aa691b0af105c8dbc5443b1e0823a701e53c3871.tar.bz2 wekan-aa691b0af105c8dbc5443b1e0823a701e53c3871.zip |
- Revert Improve authentication to [fix Login failure](https://github.com/wekan/wekan/issues/2004).
Thanks to xet7 !
Closes #2004
Diffstat (limited to 'client/components/main')
-rw-r--r-- | client/components/main/layouts.jade | 1 | ||||
-rw-r--r-- | client/components/main/layouts.js | 87 |
2 files changed, 43 insertions, 45 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 9838354f..393f890b 100644 --- a/client/components/main/layouts.js +++ b/client/components/main/layouts.js @@ -6,13 +6,23 @@ const i18nTagToT9n = (i18nTag) => { return i18nTag; }; -Template.userFormsLayout.onCreated(function() { - Meteor.call('getDefaultAuthenticationMethod', (error, result) => { - this.data.defaultAuthenticationMethod = new ReactiveVar(error ? undefined : result); - }); -}); +const validator = { + set(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)); @@ -71,14 +81,13 @@ Template.userFormsLayout.events({ } }); }, - 'click #at-btn'(event, instance) { + '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 email = $('#at-field-username_and_email').val(); - const password = $('#at-field-password').val(); - - if (FlowRouter.getRouteName() !== 'atSignIn' || password === '') { + const authenticationMethodSelected = $('.select-authentication').val(); + // Local account + if (authenticationMethodSelected === 'password') { return; } @@ -86,11 +95,29 @@ Template.userFormsLayout.events({ event.preventDefault(); event.stopImmediatePropagation(); - Meteor.subscribe('user-authenticationMethod', email, { - onReady() { - return authentication.call(this, instance, email, password); - }, - }); + const email = $('#at-field-username_and_email').val(); + const password = $('#at-field-password').val(); + + // Ldap account + if (authenticationMethodSelected === 'ldap') { + // Check if the user can use the ldap connection + Meteor.subscribe('user-authenticationMethod', email, { + onReady() { + 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('/'); + } + return error; + }); + } + return this.stop(); + }, + }); + } }, }); @@ -99,33 +126,3 @@ Template.defaultLayout.events({ Modal.close(); }, }); - -function authentication(instance, email, password) { - let user = Users.findOne(); - // Authentication with password - if (user && user.authenticationMethod === 'password') { - $('#at-pwd-form').submit(); - // Meteor.call('logoutWithTimer', user._id, () => {}); - return this.stop(); - } - - // If user doesn't exist, uses the default authentication method if it defined - if (user === undefined) { - user = { - 'authenticationMethod': instance.data.defaultAuthenticationMethod.get(), - }; - } - - // Authentication with LDAP - if (user.authenticationMethod === 'ldap') { - // Use the ldap connection package - Meteor.loginWithLDAP(email, password, function(error) { - if (!error) { - // Meteor.call('logoutWithTimer', Users.findOne()._id, () => {}); - return FlowRouter.go('/'); - } - return error; - }); - } - return this.stop(); -} |