diff options
author | Lauri Ojansivu <x@xet7.org> | 2018-12-05 08:59:59 +0200 |
---|---|---|
committer | Lauri Ojansivu <x@xet7.org> | 2018-12-05 08:59:59 +0200 |
commit | 38012903b835d7c39d060ef1a81b2a547fb48b32 (patch) | |
tree | 257b5bf0fc9b38221e41002ddd17f6c7cc77ed30 | |
parent | 6ab699d650caaf23e8d4cdcff268a54dd3f0fffa (diff) | |
parent | 9c4e305a84ae4c32de9929ec95290efc596508e4 (diff) | |
download | wekan-38012903b835d7c39d060ef1a81b2a547fb48b32.tar.gz wekan-38012903b835d7c39d060ef1a81b2a547fb48b32.tar.bz2 wekan-38012903b835d7c39d060ef1a81b2a547fb48b32.zip |
Merge branch 'edge' into meteor-1.8
-rw-r--r-- | .meteor/packages | 1 | ||||
-rw-r--r-- | .meteor/versions | 1 | ||||
-rw-r--r-- | CHANGELOG.md | 12 | ||||
-rw-r--r-- | client/components/main/layouts.jade | 1 | ||||
-rw-r--r-- | client/components/main/layouts.js | 96 | ||||
-rw-r--r-- | models/settings.js | 30 | ||||
-rw-r--r-- | package.json | 2 | ||||
-rw-r--r-- | sandstorm-pkgdef.capnp | 4 | ||||
-rw-r--r-- | server/publications/users.js | 1 |
9 files changed, 63 insertions, 85 deletions
diff --git a/.meteor/packages b/.meteor/packages index fb8a0215..65d54fd2 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -90,4 +90,3 @@ mquandalle:moment msavin:usercache wekan:wekan-ldap wekan:accounts-cas -msavin:sjobs
\ No newline at end of file diff --git a/.meteor/versions b/.meteor/versions index 4513dd50..8d10ad73 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -121,7 +121,6 @@ mquandalle:jquery-ui-drag-drop-sort@0.2.0 mquandalle:moment@1.0.1 mquandalle:mousetrap-bindglobal@0.0.1 mquandalle:perfect-scrollbar@0.6.5_2 -msavin:sjobs@3.0.6 msavin:usercache@1.0.0 npm-bcrypt@0.9.3 npm-mongo@3.1.1 diff --git a/CHANGELOG.md b/CHANGELOG.md index f36681f3..6b817a0a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# v1.82 2018-12-05 Wekan release + +This release fixes the following bugs: + +- Partially #2045 revert [Improve authentication](https://github.com/wekan/wekan/issues/2016), + adding back password/LDAP dropdown, because login did now work. + NOTE: This was added in v1.71, reverted at v1.73 because login did not work, added back at v1.79, + and then reverted partially at v1.82 because login did not work. + Related LDAP logout timer does not work yet. + +Thanks to GitHub user xet7 for contributions. + # v1.81 2018-12-04 Wekan release This release fixes the following bugs: diff --git a/client/components/main/layouts.jade b/client/components/main/layouts.jade index 969ec6a9..e434eaba 100644 --- a/client/components/main/layouts.jade +++ b/client/components/main/layouts.jade @@ -23,6 +23,7 @@ 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}} diff --git a/client/components/main/layouts.js b/client/components/main/layouts.js index 0f64ca14..d4a9d6d1 100644 --- a/client/components/main/layouts.js +++ b/client/components/main/layouts.js @@ -6,14 +6,29 @@ 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.onCreated(() => { Meteor.subscribe('setting'); + }); Template.userFormsLayout.onRendered(() => { + + AccountsTemplates.state.form.keys = new Proxy(AccountsTemplates.state.form.keys, validator); + const i18nTag = navigator.language; if (i18nTag) { T9n.setLanguage(i18nTagToT9n(i18nTag)); @@ -22,6 +37,7 @@ Template.userFormsLayout.onRendered(() => { }); Template.userFormsLayout.helpers({ + currentSetting() { return Settings.findOne(); }, @@ -76,14 +92,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 === '' || email === '') { + const authenticationMethodSelected = $('.select-authentication').val(); + // Local account + if (authenticationMethodSelected === 'password') { return; } @@ -91,11 +106,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(); + }, + }); + } }, }); @@ -104,38 +137,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; - }); - } - - /* else { - process.env.DEFAULT_AUTHENTICATION_METHOD is not defined - } */ - - return this.stop(); -} diff --git a/models/settings.js b/models/settings.js index 9ca26c48..52212809 100644 --- a/models/settings.js +++ b/models/settings.js @@ -239,35 +239,5 @@ if (Meteor.isServer) { cas: isCasEnabled(), }; }, - - getDefaultAuthenticationMethod() { - return process.env.DEFAULT_AUTHENTICATION_METHOD; - }, - - // TODO: patch error : did not check all arguments during call - logoutWithTimer(userId) { - if (process.env.LOGOUT_WITH_TIMER) { - Jobs.run('logOut', userId, { - in: { - days: process.env.LOGOUT_IN, - }, - on: { - hour: process.env.LOGOUT_ON_HOURS, - minute: process.env.LOGOUT_ON_MINUTES, - }, - priority: 1, - }); - } - }, - }); - - Jobs.register({ - logOut(userId) { - Meteor.users.update( - {_id: userId}, - {$set: {'services.resume.loginTokens': []}} - ); - this.success(); - }, }); } diff --git a/package.json b/package.json index f5d86fa5..67075b97 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v1.81.0", + "version": "v1.82.0", "description": "Open-Source kanban", "private": true, "scripts": { diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp index 463b8fcb..b5fcd0c3 100644 --- a/sandstorm-pkgdef.capnp +++ b/sandstorm-pkgdef.capnp @@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = ( appTitle = (defaultText = "Wekan"), # The name of the app as it is displayed to the user. - appVersion = 183, + appVersion = 184, # Increment this for every release. - appMarketingVersion = (defaultText = "1.81.0~2018-12-04"), + appMarketingVersion = (defaultText = "1.82.0~2018-12-05"), # Human-readable presentation of the app version. minUpgradableAppVersion = 0, diff --git a/server/publications/users.js b/server/publications/users.js index 136e1e08..f0c94153 100644 --- a/server/publications/users.js +++ b/server/publications/users.js @@ -22,7 +22,6 @@ Meteor.publish('user-authenticationMethod', function(match) { check(match, String); return Users.find({$or: [{_id: match}, {email: match}, {username: match}]}, { fields: { - '_id': 1, 'authenticationMethod': 1, }, }); |