فهرست منبع

patch authentication

guillaume 6 سال پیش
والد
کامیت
8c497efb46

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

@@ -18,7 +18,6 @@ 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}}

+ 27 - 43
client/components/main/layouts.js

@@ -6,23 +6,7 @@ const i18nTagToT9n = (i18nTag) => {
   return i18nTag;
 };
 
-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));
@@ -85,39 +69,39 @@ Template.userFormsLayout.events({
     /* 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') {
+    if (FlowRouter.getRouteName() !== 'atSignIn') {
       return;
     }
 
-    // Stop submit #at-pwd-form
-    event.preventDefault();
-    event.stopImmediatePropagation();
-
     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;
-            });
-          }
+    Meteor.subscribe('user-authenticationMethod', email, {
+      onReady() {
+        const user = Users.findOne();
+
+        if (user && user.authenticationMethod === 'password') {
           return this.stop();
-        },
-      });
-    }
+        }
+
+        // Stop submit #at-pwd-form
+        event.preventDefault();
+        event.stopImmediatePropagation();
+
+        const password = $('#at-field-password').val();
+
+        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();
+      },
+    });
   },
 });
 

+ 0 - 6
client/components/settings/connectionMethod.jade

@@ -1,6 +0,0 @@
-template(name='connectionMethod')
-  div.at-form-authentication
-    label {{_ 'authentication-method'}}
-    select.select-authentication
-        each authentications
-            option(value="{{value}}") {{_ value}}

+ 0 - 34
client/components/settings/connectionMethod.js

@@ -1,34 +0,0 @@
-Template.connectionMethod.onCreated(function() {
-  this.authenticationMethods = new ReactiveVar([]);
-
-  Meteor.call('getAuthenticationsEnabled', (_, result) => {
-    if (result) {
-      // TODO : add a management of different languages
-      // (ex {value: ldap, text: TAPi18n.__('ldap', {}, T9n.getLanguage() || 'en')})
-      this.authenticationMethods.set([
-        {value: 'password'},
-        // Gets only the authentication methods availables
-        ...Object.entries(result).filter((e) => e[1]).map((e) => ({value: e[0]})),
-      ]);
-    }
-
-    // If only the default authentication available, hides the select boxe
-    const content = $('.at-form-authentication');
-    if (!(this.authenticationMethods.get().length > 1)) {
-      content.hide();
-    } else {
-      content.show();
-    }
-  });
-});
-
-Template.connectionMethod.onRendered(() => {
-  // Moves the select boxe in the first place of the at-pwd-form div
-  $('.at-form-authentication').detach().prependTo('.at-pwd-form');
-});
-
-Template.connectionMethod.helpers({
-  authentications() {
-    return Template.instance().authenticationMethods.get();
-  },
-});

+ 4 - 4
models/users.js

@@ -520,10 +520,10 @@ if (Meteor.isServer) {
     }
 
     const disableRegistration = Settings.findOne().disableRegistration;
-    // If ldap, bypass the inviation code if the self registration isn't allowed.
-    // TODO : pay attention if ldap field in the user model change to another content ex : ldap field to connection_type
-    if (options.ldap || !disableRegistration) {
-      user.authenticationMethod = 'ldap';
+    if (!disableRegistration) {
+      if (options.ldap) {
+        user.authenticationMethod = 'ldap';
+      }
       return user;
     }