浏览代码

AMBARI-1333. Add username validation for Ambari local users. (yusaku)

git-svn-id: https://svn.apache.org/repos/asf/incubator/ambari/trunk@1441685 13f79535-47bb-0310-9956-ffa450edef68
Yusaku Sako 12 年之前
父节点
当前提交
b17b783649
共有 4 个文件被更改,包括 28 次插入6 次删除
  1. 2 0
      CHANGES.txt
  2. 4 0
      ambari-web/app/messages.js
  3. 12 6
      ambari-web/app/models/user.js
  4. 10 0
      ambari-web/app/utils/validator.js

+ 2 - 0
CHANGES.txt

@@ -38,6 +38,8 @@ Trunk (unreleased changes):
 
  IMPROVEMENTS
 
+ AMBARI-1333. Add username validation for Ambari local users. (yusaku) 
+
  AMBARI-1329. Adjust job browser column sizing. (yusaku)
  
  AMBARI-1327. Add Hosts. Remove existig hosts display. (Alexandr Antonenko via jspeidel)

+ 4 - 0
ambari-web/app/messages.js

@@ -235,6 +235,10 @@ Em.I18n.translations = {
   'admin.users.username':'Username',
   'admin.users.createSuccess': 'User successfully created.',
   'admin.users.createError': 'Error occurred while user creating.',
+  'admin.users.createError.userNameValidation': 'User name should contains only letters and digits and start with letter',
+  'admin.users.createError.passwordValidation': 'Passwords are different',
+  'admin.users.createError.userNameExists': 'User with the same name is already exists',
+  'admin.users.editError.requiredField': 'This is required',
 
   'question.sure':'Are you sure?',
   'yes':'Yes',

+ 12 - 6
ambari-web/app/models/user.js

@@ -75,7 +75,7 @@ App.EditUserForm = App.Form.extend({
     var oldPass = this.get('field.old_password');
 
     if (!validator.empty(newPass.get('value')) && validator.empty(oldPass.get('value'))) {
-        oldPass.set('errorMessage', "This is required");
+        oldPass.set('errorMessage', this.t('admin.users.editError.requiredField'));
         isValid = false;
     }
 
@@ -122,7 +122,7 @@ App.CreateUserForm = App.Form.extend({
 
     if (!validator.empty(passField.get('value'))) {
       if (passField.get('value') != passRetype.get('value')) {
-        passRetype.set('errorMessage', "Passwords are different");
+        passRetype.set('errorMessage', this.t('admin.users.createError.passwordValidation'));
         isValid = false;
       }
     }
@@ -131,10 +131,16 @@ App.CreateUserForm = App.Form.extend({
       var users = App.User.find();
       var userNameField = this.getField('userName');
       var userName = userNameField.get('value');
-        if (users.mapProperty('userName').contains(userName)) {
-          userNameField.set('errorMessage', 'User with the same name is already exists');
-          return isValid = false;
-        }
+
+      if (!validator.isValidUserName(userName)) {
+        userNameField.set('errorMessage', this.t('admin.users.createError.userNameValidation'));
+        isValid = false;
+      }
+
+      if (users.mapProperty('userName').contains(userName)) {
+        userNameField.set('errorMessage', this.t('admin.users.createError.userNameExists'));
+        return isValid = false;
+      }
     }
 
     return isValid;

+ 10 - 0
ambari-web/app/utils/validator.js

@@ -81,6 +81,16 @@ module.exports = {
     return domainRegex.test(value);
   },
 
+  /**
+   * validate username
+   * @param value
+   * @return {Boolean}
+   */
+  isValidUserName: function(value) {
+    var usernameRegex = /^[a-z]([-a-z0-9]{0,30})\$?$/;
+    return usernameRegex.test(value);
+  },
+
   empty:function (e) {
     switch (e) {
       case "":