Browse Source

Merge branch 'edge' into meteor-1.8

Lauri Ojansivu 6 years ago
parent
commit
38012903b8

+ 0 - 1
.meteor/packages

@@ -90,4 +90,3 @@ mquandalle:moment
 msavin:usercache
 msavin:usercache
 wekan:wekan-ldap
 wekan:wekan-ldap
 wekan:accounts-cas
 wekan:accounts-cas
-msavin:sjobs

+ 0 - 1
.meteor/versions

@@ -121,7 +121,6 @@ mquandalle:jquery-ui-drag-drop-sort@0.2.0
 mquandalle:moment@1.0.1
 mquandalle:moment@1.0.1
 mquandalle:mousetrap-bindglobal@0.0.1
 mquandalle:mousetrap-bindglobal@0.0.1
 mquandalle:perfect-scrollbar@0.6.5_2
 mquandalle:perfect-scrollbar@0.6.5_2
-msavin:sjobs@3.0.6
 msavin:usercache@1.0.0
 msavin:usercache@1.0.0
 npm-bcrypt@0.9.3
 npm-bcrypt@0.9.3
 npm-mongo@3.1.1
 npm-mongo@3.1.1

+ 12 - 0
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
 # v1.81 2018-12-04 Wekan release
 
 
 This release fixes the following bugs:
 This release fixes the following bugs:

+ 1 - 0
client/components/main/layouts.jade

@@ -23,6 +23,7 @@ template(name="userFormsLayout")
         br
         br
     section.auth-dialog
     section.auth-dialog
       +Template.dynamic(template=content)
       +Template.dynamic(template=content)
+      +connectionMethod
       if isCas
       if isCas
         .at-form
         .at-form
           button#cas(class='at-btn submit' type='submit') {{casSignInLabel}}
           button#cas(class='at-btn submit' type='submit') {{casSignInLabel}}

+ 47 - 49
client/components/main/layouts.js

@@ -6,14 +6,29 @@ const i18nTagToT9n = (i18nTag) => {
   return 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');
   Meteor.subscribe('setting');
+
 });
 });
 
 
 Template.userFormsLayout.onRendered(() => {
 Template.userFormsLayout.onRendered(() => {
+
+  AccountsTemplates.state.form.keys = new Proxy(AccountsTemplates.state.form.keys, validator);
+
   const i18nTag = navigator.language;
   const i18nTag = navigator.language;
   if (i18nTag) {
   if (i18nTag) {
     T9n.setLanguage(i18nTagToT9n(i18nTag));
     T9n.setLanguage(i18nTagToT9n(i18nTag));
@@ -22,6 +37,7 @@ Template.userFormsLayout.onRendered(() => {
 });
 });
 
 
 Template.userFormsLayout.helpers({
 Template.userFormsLayout.helpers({
+
   currentSetting() {
   currentSetting() {
     return Settings.findOne();
     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.
     /* 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 !!
        !! 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;
       return;
     }
     }
 
 
@@ -91,11 +106,29 @@ Template.userFormsLayout.events({
     event.preventDefault();
     event.preventDefault();
     event.stopImmediatePropagation();
     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();
     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();
-}

+ 0 - 30
models/settings.js

@@ -239,35 +239,5 @@ if (Meteor.isServer) {
         cas: isCasEnabled(),
         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();
-    },
   });
   });
 }
 }

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "wekan",
   "name": "wekan",
-  "version": "v1.81.0",
+  "version": "v1.82.0",
   "description": "Open-Source kanban",
   "description": "Open-Source kanban",
   "private": true,
   "private": true,
   "scripts": {
   "scripts": {

+ 2 - 2
sandstorm-pkgdef.capnp

@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
     appTitle = (defaultText = "Wekan"),
     appTitle = (defaultText = "Wekan"),
     # The name of the app as it is displayed to the user.
     # The name of the app as it is displayed to the user.
 
 
-    appVersion = 183,
+    appVersion = 184,
     # Increment this for every release.
     # 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.
     # Human-readable presentation of the app version.
 
 
     minUpgradableAppVersion = 0,
     minUpgradableAppVersion = 0,

+ 0 - 1
server/publications/users.js

@@ -22,7 +22,6 @@ Meteor.publish('user-authenticationMethod', function(match) {
   check(match, String);
   check(match, String);
   return Users.find({$or: [{_id: match}, {email: match}, {username: match}]}, {
   return Users.find({$or: [{_id: match}, {email: match}, {username: match}]}, {
     fields: {
     fields: {
-      '_id': 1,
       'authenticationMethod': 1,
       'authenticationMethod': 1,
     },
     },
   });
   });