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

impl pre validate hook to User model

Yuki Takei 5 лет назад
Родитель
Сommit
f08799d998
2 измененных файлов с 7 добавлено и 11 удалено
  1. 2 8
      src/lib/util/locale-utils.js
  2. 5 3
      src/server/models/user.js

+ 2 - 8
src/lib/util/locale-utils.js

@@ -29,15 +29,9 @@ function listLocaleMetadatas() {
 /**
 /**
  * List locales IDs (=subdir names)
  * List locales IDs (=subdir names)
  */
  */
-function listLocaleIds(includeDeprecatedIds = false) {
-  let list = listLocaleMetadatas()
+function listLocaleIds() {
+  return listLocaleMetadatas()
     .map(meta => meta.id);
     .map(meta => meta.id);
-
-  if (includeDeprecatedIds) {
-    list = list.concat(DEPRECATED_LOCALE_IDS);
-  }
-
-  return list;
 }
 }
 
 
 function migrateDeprecatedLocaleId(localeId) {
 function migrateDeprecatedLocaleId(localeId) {

+ 5 - 3
src/server/models/user.js

@@ -53,7 +53,7 @@ module.exports = function(crowi) {
     apiToken: { type: String, index: true },
     apiToken: { type: String, index: true },
     lang: {
     lang: {
       type: String,
       type: String,
-      enum: listLocaleIds(true),
+      enum: listLocaleIds(),
       default: 'en_US',
       default: 'en_US',
     },
     },
     status: {
     status: {
@@ -71,12 +71,14 @@ module.exports = function(crowi) {
         if (!doc.isEmailPublished) {
         if (!doc.isEmailPublished) {
           delete ret.email;
           delete ret.email;
         }
         }
-        // migrate deperecated lang
-        doc.lang = migrateDeprecatedLocaleId(doc.lang);
         return ret;
         return ret;
       },
       },
     },
     },
   });
   });
+  // eslint-disable-next-line prefer-arrow-callback
+  userSchema.pre('validate', function() {
+    this.lang = migrateDeprecatedLocaleId(this.lang);
+  });
   userSchema.plugin(mongoosePaginate);
   userSchema.plugin(mongoosePaginate);
   userSchema.plugin(uniqueValidator);
   userSchema.plugin(uniqueValidator);