فهرست منبع

AMBARI-7479. 'Manage Ambari' option is available for non-admin user after page reload (Ievgen Fialkovskyi via alejandro)

Alejandro Fernandez 10 سال پیش
والد
کامیت
ddf92be12a
3فایلهای تغییر یافته به همراه24 افزوده شده و 3 حذف شده
  1. 12 0
      ambari-web/app/mappers/users_mapper.js
  2. 1 0
      ambari-web/app/models/user.js
  3. 11 3
      ambari-web/app/router.js

+ 12 - 0
ambari-web/app/mappers/users_mapper.js

@@ -25,6 +25,7 @@ App.usersMapper = App.QuickDataMapper.create({
     user_name : 'Users.user_name',
     is_ldap: 'Users.ldap_user',
     admin: 'Users.admin',
+    operator: 'Users.operator',
     permissions: 'permissions'
   },
   map: function (json) {
@@ -37,6 +38,7 @@ App.usersMapper = App.QuickDataMapper.create({
           item.permissions = item.privileges.items.mapProperty('PrivilegeInfo.permission_name');
         }
         item.Users.admin = self.isAdmin(item.permissions);
+        item.Users.operator = self.isOperator(item.permissions);
         result.push(self.parseIt(item, self.config));
         App.store.loadMany(self.get('model'), result);
       }
@@ -49,6 +51,16 @@ App.usersMapper = App.QuickDataMapper.create({
    * @return {Boolean}
    **/
   isAdmin: function(permissionList) {
+    //TODO: Separate cluster operator from admin
     return permissionList.indexOf('AMBARI.ADMIN') > -1 || permissionList.indexOf('CLUSTER.OPERATE') > -1;
+  },
+
+  /**
+   * Check if user is operator.
+   * @param {Array} permissionList
+   * @return {Boolean}
+   **/
+  isOperator: function(permissionList) {
+    return permissionList.indexOf('CLUSTER.OPERATE') > -1;
   }
 });

+ 1 - 0
ambari-web/app/models/user.js

@@ -33,6 +33,7 @@ App.User = DS.Model.extend({
   }.property('isLdap'),
   auditItems:DS.hasMany('App.ServiceAudit'),
   admin: DS.attr('boolean'),
+  operator: DS.attr('boolean'),
   /**
    * List of permissions assigned to user
    *  Available permissions:

+ 11 - 3
ambari-web/app/router.js

@@ -413,9 +413,17 @@ App.Router = Em.Router.extend({
    * initialize isAdmin if user is administrator
    */
   initAdmin: function(){
-    if(App.db && App.db.getUser() && App.db.getUser().admin) {
-      App.set('isAdmin', true);
-      console.log('Administrator logged in');
+    if (App.db) {
+      var user = App.db.getUser();
+      if (user) {
+        if (user.admin) {
+          App.set('isAdmin', true);
+          console.log('Administrator logged in');
+        }
+        if (user.operator) {
+          App.set('isOperator', true);
+        }
+      }
     }
   },