diff options
author | Gavin Lilly <gavtherav@gmail.com> | 2019-02-11 16:43:57 +0000 |
---|---|---|
committer | Gavin Lilly <gavtherav@gmail.com> | 2019-02-11 16:43:57 +0000 |
commit | c1ea3f49cadeab5aec8db85ba0dceb18028bbf03 (patch) | |
tree | 8c87e2ea182b96f4d9b08b84dc26a300c9c5f0e9 /client/components/main | |
parent | 905c45f225809769268e1aaa64d30c1d44254f15 (diff) | |
parent | 2d291c8f5ea747c0097879cb0d9fc5e4c317a301 (diff) | |
download | wekan-c1ea3f49cadeab5aec8db85ba0dceb18028bbf03.tar.gz wekan-c1ea3f49cadeab5aec8db85ba0dceb18028bbf03.tar.bz2 wekan-c1ea3f49cadeab5aec8db85ba0dceb18028bbf03.zip |
Merge branch 'devel' of github.com:wekan/wekan into devel
Diffstat (limited to 'client/components/main')
-rw-r--r-- | client/components/main/layouts.jade | 6 | ||||
-rw-r--r-- | client/components/main/layouts.js | 132 |
2 files changed, 74 insertions, 64 deletions
diff --git a/client/components/main/layouts.jade b/client/components/main/layouts.jade index 55ee2686..a6115ec1 100644 --- a/client/components/main/layouts.jade +++ b/client/components/main/layouts.jade @@ -23,10 +23,8 @@ template(name="userFormsLayout") br section.auth-dialog +Template.dynamic(template=content) - +connectionMethod - if isCas - .at-form - button#cas(class='at-btn submit' type='submit') {{casSignInLabel}} + if currentSetting.displayAuthenticationMethod + +connectionMethod div.at-form-lang select.select-lang.js-userform-set-language each languages diff --git a/client/components/main/layouts.js b/client/components/main/layouts.js index a50d167e..6f7c914a 100644 --- a/client/components/main/layouts.js +++ b/client/components/main/layouts.js @@ -20,13 +20,19 @@ const validator = { }, }; -Template.userFormsLayout.onCreated(() => { - Meteor.subscribe('setting'); - +Template.userFormsLayout.onCreated(function() { + const instance = this; + instance.currentSetting = new ReactiveVar(); + + Meteor.subscribe('setting', { + onReady() { + instance.currentSetting.set(Settings.findOne()); + return this.stop(); + }, + }); }); Template.userFormsLayout.onRendered(() => { - AccountsTemplates.state.form.keys = new Proxy(AccountsTemplates.state.form.keys, validator); const i18nTag = navigator.language; @@ -37,12 +43,10 @@ Template.userFormsLayout.onRendered(() => { }); Template.userFormsLayout.helpers({ - currentSetting() { - return Settings.findOne(); + return Template.instance().currentSetting.get(); }, - afterBodyStart() { return currentSetting.customHTMLafterBodyStart; }, @@ -75,17 +79,6 @@ Template.userFormsLayout.helpers({ const curLang = T9n.getLanguage() || 'en'; return t9nTag === curLang; }, -/* - isCas() { - return Meteor.settings.public && - Meteor.settings.public.cas && - Meteor.settings.public.cas.loginUrl; - }, - - casSignInLabel() { - return TAPi18n.__('casSignIn', {}, T9n.getLanguage() || 'en'); - }, -*/ }); Template.userFormsLayout.events({ @@ -94,55 +87,74 @@ Template.userFormsLayout.events({ T9n.setLanguage(i18nTagToT9n(i18nTag)); evt.preventDefault(); }, - 'click button#cas'() { + 'click #at-btn'(event, instance) { + if (FlowRouter.getRouteName() === 'atSignIn') { + authentication(event, instance); + } + }, +}); + +Template.defaultLayout.events({ + 'click .js-close-modal': () => { + Modal.close(); + }, +}); + +async function authentication(event, instance) { + const match = $('#at-field-username_and_email').val(); + const password = $('#at-field-password').val(); + + if (!match || !password) return; + + const result = await getAuthenticationMethod(instance.currentSetting.get(), match); + + if (result === 'password') return; + + // Stop submit #at-pwd-form + event.preventDefault(); + event.stopImmediatePropagation(); + + switch (result) { + case 'ldap': + Meteor.loginWithLDAP(match, password, function() { + FlowRouter.go('/'); + }); + break; + + case 'cas': Meteor.loginWithCas(function() { - if (FlowRouter.getRouteName() === 'atSignIn') { - FlowRouter.go('/'); - } + FlowRouter.go('/'); }); - }, - '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 (authenticationMethodSelected === 'password') { - return; - } + break; - // Stop submit #at-pwd-form - event.preventDefault(); - event.stopImmediatePropagation(); + default: + break; + } +} - const email = $('#at-field-username_and_email').val(); - const password = $('#at-field-password').val(); +function getAuthenticationMethod({displayAuthenticationMethod, defaultAuthenticationMethod}, match) { + if (displayAuthenticationMethod) { + return $('.select-authentication').val(); + } + return getUserAuthenticationMethod(defaultAuthenticationMethod, match); +} - // Ldap account - if (authenticationMethodSelected === 'ldap') { - // Check if the user can use the ldap connection - Meteor.subscribe('user-authenticationMethod', email, { +function getUserAuthenticationMethod(defaultAuthenticationMethod, match) { + return new Promise((resolve) => { + try { + Meteor.subscribe('user-authenticationMethod', match, { 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(); + + const authenticationMethod = user + ? user.authenticationMethod + : defaultAuthenticationMethod; + + resolve(authenticationMethod); }, }); + } catch(error) { + resolve(defaultAuthenticationMethod); } - }, -}); - -Template.defaultLayout.events({ - 'click .js-close-modal': () => { - Modal.close(); - }, -}); + }); +} |