Просмотр исходного кода

Impl User.createUserByEmailAndPasswordAndStatus

* Ensure to specify `status` field by args when creating new users
Yuki Takei 8 лет назад
Родитель
Сommit
5e780591d8
2 измененных файлов с 16 добавлено и 6 удалено
  1. 2 1
      lib/models/external-account.js
  2. 14 5
      lib/models/user.js

+ 2 - 1
lib/models/external-account.js

@@ -77,7 +77,8 @@ class ExternalAccount {
                 throw new DuplicatedUsernameException(`username '${usernameToBeRegistered}' has already been existed`);
               }
 
-              return User.createUser('', usernameToBeRegistered, undefined, undefined, undefined);
+              // create user with STATUS_ACTIVE
+              return User.createUser('', usernameToBeRegistered, undefined, undefined, undefined, User.STATUS_ACTIVE);
             })
             .then((user) => {
               return this.create({ providerType: 'ldap', accountId, user: user._id });

+ 14 - 5
lib/models/user.js

@@ -666,7 +666,7 @@ module.exports = function(crowi) {
     );
   };
 
-  userSchema.statics.createUserByEmailAndPassword = function(name, username, email, password, lang, callback) {
+  userSchema.statics.createUserByEmailAndPasswordAndStatus = function(name, username, email, password, lang, status, callback) {
     var User = this
       , newUser = new User();
 
@@ -680,7 +680,7 @@ module.exports = function(crowi) {
       newUser.lang = lang;
     }
     newUser.createdAt = Date.now();
-    newUser.status = decideUserStatusOnRegistration();
+    newUser.status = status || decideUserStatusOnRegistration();
 
     newUser.save(function(err, userData) {
       if (err) {
@@ -693,18 +693,27 @@ module.exports = function(crowi) {
       }
       return callback(err, userData);
     });
+  }
+
+  /**
+   * A wrapper function of createUserByEmailAndPasswordAndStatus
+   *
+   * @return {Promise<User>}
+   */
+  userSchema.statics.createUserByEmailAndPassword = function(name, username, email, password, lang, callback) {
+    this.createUserByEmailAndPasswordAndStatus(name, username, email, password, lang, undefined, callback);
   };
 
   /**
-   * The wrapper function of createUserByEmailAndPassword
+   * A wrapper function of createUserByEmailAndPasswordAndStatus
    *
    * @return {Promise<User>}
    */
-  userSchema.statics.createUser = function(name, username, email, password, lang) {
+  userSchema.statics.createUser = function(name, username, email, password, lang, status) {
     const User = this;
 
     return new Promise((resolve, reject) => {
-      User.createUserByEmailAndPassword(name, username, email, password, lang, (err, userData) => {
+      User.createUserByEmailAndPasswordAndStatus(name, username, email, password, lang, status, (err, userData) => {
         if (err) {
           return reject(err);
         }