Repository: ambari Updated Branches: refs/heads/trunk 15a7f1c62 -> e8cc76e6e
AMBARI-13805. Add permission label to to the dataset returned by the privilege resource provider (rzang) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/e8cc76e6 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/e8cc76e6 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/e8cc76e6 Branch: refs/heads/trunk Commit: e8cc76e6e3546f6ac769e29c7345359c6b1c17e8 Parents: 15a7f1c Author: Richard Zang <rz...@apache.org> Authored: Thu Nov 19 15:04:57 2015 -0800 Committer: Richard Zang <rz...@apache.org> Committed: Thu Nov 19 15:06:32 2015 -0800 ---------------------------------------------------------------------- .../global/user_settings_controller.js | 65 +++++++++++++++++++- ambari-web/app/styles/application.less | 4 ++ ambari-web/app/templates/common/settings.hbs | 55 +++++++++++++++++ 3 files changed, 122 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/e8cc76e6/ambari-web/app/controllers/global/user_settings_controller.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/global/user_settings_controller.js b/ambari-web/app/controllers/global/user_settings_controller.js index e78ada0..80d9189 100644 --- a/ambari-web/app/controllers/global/user_settings_controller.js +++ b/ambari-web/app/controllers/global/user_settings_controller.js @@ -181,11 +181,69 @@ App.UserSettingsController = Em.Controller.extend(App.UserPref, { * @method showSettingsPopup */ showSettingsPopup: function() { + var self = this; // Settings only for admins if (!App.isAccessible('upgrade_ADMIN')) { return; } - this.dataLoading().done(this._showSettingsPopup.bind(this)); + + this.dataLoading() + .done(function(response) { + self.loadPrivileges().complete(function() { + self._showSettingsPopup(response); + }); + }); + }, + + loadPrivileges: function() { + return App.ajax.send({ + name: 'router.user.privileges', + sender: this, + data: { + userName: App.db.getLoginName() + }, + success: 'loadPrivilegesSuccessCallback' + }); + }, + + loadPrivilegesSuccessCallback: function(data) { + var privileges = { + clusters: {}, + views: {} + }; + data.items.forEach(function(privilege) { + privilege = privilege.PrivilegeInfo; + if(privilege.type === 'CLUSTER'){ + // This is cluster + privileges.clusters[privilege.cluster_name] = privileges.clusters[privilege.cluster_name] || []; + privileges.clusters[privilege.cluster_name].push(privilege.permission_label); + } else if ( privilege.type === 'VIEW'){ + privileges.views[privilege.instance_name] = privileges.views[privilege.instance_name] || { privileges:[]}; + privileges.views[privilege.instance_name].version = privilege.version; + privileges.views[privilege.instance_name].view_name = privilege.view_name; + privileges.views[privilege.instance_name].privileges.push(privilege.permission_label); + } + }); + // restructure data for view + var clusters = []; + var views = []; + for (key in privileges.clusters){ + clusters.push({ + name: key, + privileges: privileges.clusters[key] + }); + } + for (key in privileges.views) { + views.push({ + instance_name: key, + privileges: privileges.views[key].privileges, + version: privileges.views[key].version, + view_name: privileges.views[key].view_name + }); + } + privileges.clusters = clusters; + privileges.views = views; + this.set('privileges', data.items.length ? privileges : null); }, /** @@ -218,8 +276,11 @@ App.UserSettingsController = Em.Controller.extend(App.UserPref, { curValue = !this.get('isNotShowBgChecked'); }.observes('isNotShowBgChecked'), - timezonesList: timezonesFormatted + timezonesList: timezonesFormatted, + + privileges: self.get('privileges'), + isAdmin: App.get('isAmbariAdmin') }), /** http://git-wip-us.apache.org/repos/asf/ambari/blob/e8cc76e6/ambari-web/app/styles/application.less ---------------------------------------------------------------------- diff --git a/ambari-web/app/styles/application.less b/ambari-web/app/styles/application.less index 52a573d..58c5f14 100644 --- a/ambari-web/app/styles/application.less +++ b/ambari-web/app/styles/application.less @@ -6083,3 +6083,7 @@ input[type="radio"].align-checkbox, input[type="checkbox"].align-checkbox { text-decoration: none; } } + +.view-permission-header th { + padding-top: 40px; +} http://git-wip-us.apache.org/repos/asf/ambari/blob/e8cc76e6/ambari-web/app/templates/common/settings.hbs ---------------------------------------------------------------------- diff --git a/ambari-web/app/templates/common/settings.hbs b/ambari-web/app/templates/common/settings.hbs index 2ca2991..899b9cf 100644 --- a/ambari-web/app/templates/common/settings.hbs +++ b/ambari-web/app/templates/common/settings.hbs @@ -39,4 +39,59 @@ }} </label> </div> + <div> + {{#unless view.isAdmin}} + <table class="table"> + <thead> + <tr> + <th>Cluster</th> + <th>Cluster Role</th> + </tr> + </thead> + <tbody> + {{#each cluster in view.privileges.clusters}} + <tr> + <td> + <span class="glyphicon glyphicon-cloud"></span> + <span>{{cluster.name}}</span> + </td> + <td> + {{#each privilege in cluster.privileges}} + <span tooltip="{{privilege}}">{{privilege}} </span> + {{/each}} + </td> + </tr> + {{/each}} + </tbody> + <thead class="view-permission-header"> + <tr> + <th>View</th> + <th>View Permissions</th> + </tr> + </thead> + <tbody ng-hide="user.admin"> + {{#each v in view.privileges.views}} + <tr> + <td> + <span class="glyphicon glyphicon-th"></span> + <span>{{v.instance_name}}</span> + </td> + <td> + {{#each privilege in v.privileges}} + <span tooltip="{{privilege}}" >{{privilege}} </span> + {{/each}} + </td> + </tr> + {{/each}} + </tbody> + </table> + {{/unless}} + {{#if view.isAdmin}} + <div class="alert alert-info">This user is an Ambari Admin and has all privileges.</div> + {{else}} + {{#unless view.privileges}} + <div class="alert alert-info">This user does not have any privileges.</div> + {{/unless}} + {{/if}} + </div> </div>