From 5ffe0f40d230a93111f1492bdd00d34e367a7161 Mon Sep 17 00:00:00 2001 From: Marliana Lara Date: Thu, 29 Mar 2018 10:53:09 -0400 Subject: [PATCH] Only show banner if user is an org admin without edit capabilities --- awx/ui/client/src/teams/edit/teams-edit.controller.js | 11 +++++++---- awx/ui/client/src/teams/list/teams-list.controller.js | 4 ++-- awx/ui/client/src/teams/main.js | 9 +++++++++ awx/ui/client/src/teams/teams.form.js | 2 +- awx/ui/client/src/teams/teams.list.js | 2 +- awx/ui/client/src/users/edit/users-edit.controller.js | 8 +++++--- awx/ui/client/src/users/list/users-list.controller.js | 4 ++-- awx/ui/client/src/users/main.js | 9 +++++++++ awx/ui/client/src/users/users.form.js | 2 +- awx/ui/client/src/users/users.list.js | 2 +- 10 files changed, 38 insertions(+), 15 deletions(-) diff --git a/awx/ui/client/src/teams/edit/teams-edit.controller.js b/awx/ui/client/src/teams/edit/teams-edit.controller.js index 7ecd631182..41a37b19cb 100644 --- a/awx/ui/client/src/teams/edit/teams-edit.controller.js +++ b/awx/ui/client/src/teams/edit/teams-edit.controller.js @@ -5,17 +5,20 @@ *************************************************/ export default ['$scope', '$rootScope', '$stateParams', 'TeamForm', 'Rest', - 'ProcessErrors', 'GetBasePath', 'Wait', '$state', 'OrgAdminLookup', + 'ProcessErrors', 'GetBasePath', 'Wait', '$state', 'OrgAdminLookup', 'resolvedModels', function($scope, $rootScope, $stateParams, TeamForm, Rest, ProcessErrors, - GetBasePath, Wait, $state, OrgAdminLookup) { + GetBasePath, Wait, $state, OrgAdminLookup, models) { + const { me } = models; var form = TeamForm, - id = $stateParams.team_id, - defaultUrl = GetBasePath('teams') + id; + id = $stateParams.team_id, + defaultUrl = GetBasePath('teams') + id; init(); function init() { + $scope.canEdit = me.get('summary_fields.user_capabilities.edit'); + $scope.isOrgAdmin = me.get('related.admin_of_organizations.count') > 0; $scope.team_id = id; Rest.setUrl(defaultUrl); Wait('start'); diff --git a/awx/ui/client/src/teams/list/teams-list.controller.js b/awx/ui/client/src/teams/list/teams-list.controller.js index c495416ae2..254629d30b 100644 --- a/awx/ui/client/src/teams/list/teams-list.controller.js +++ b/awx/ui/client/src/teams/list/teams-list.controller.js @@ -17,12 +17,12 @@ export default ['$scope', 'Rest', 'TeamList', 'Prompt', init(); function init() { - const canEdit = me.get('summary_fields.user_capabilities.edit'); + $scope.canEdit = me.get('summary_fields.user_capabilities.edit'); $scope.canAdd = false; rbacUiControlService.canAdd('teams') .then(function(params) { - $scope.canAdd = params.canAdd && canEdit; + $scope.canAdd = params.canAdd; }); // search init $scope.list = list; diff --git a/awx/ui/client/src/teams/main.js b/awx/ui/client/src/teams/main.js index df9e15894c..7140e9aaf9 100644 --- a/awx/ui/client/src/teams/main.js +++ b/awx/ui/client/src/teams/main.js @@ -42,6 +42,15 @@ angular.module('Teams', []) activityStreamTarget: 'team' }, resolve: { + edit: { + resolvedModels: ['MeModel', '$q', function(Me, $q) { + const promises = { + me: new Me('get').then((me) => me.extend('get', 'admin_of_organizations')) + }; + + return $q.all(promises); + }] + }, list: { resolvedModels: ['MeModel', '$q', function(Me, $q) { const promises = { diff --git a/awx/ui/client/src/teams/teams.form.js b/awx/ui/client/src/teams/teams.form.js index 0b76cca634..855d8519d1 100644 --- a/awx/ui/client/src/teams/teams.form.js +++ b/awx/ui/client/src/teams/teams.form.js @@ -20,7 +20,7 @@ export default ['i18n', function(i18n) { stateTree: 'teams', tabs: true, messageBar: { - ngShow: '!user_is_system_auditor && !canAdd', + ngShow: 'isOrgAdmin && !canEdit', message: i18n._("Contact your System Administrator to grant you the appropriate permissions to add and edit Users and Teams.") }, fields: { diff --git a/awx/ui/client/src/teams/teams.list.js b/awx/ui/client/src/teams/teams.list.js index 93aab82848..1af52a8084 100644 --- a/awx/ui/client/src/teams/teams.list.js +++ b/awx/ui/client/src/teams/teams.list.js @@ -43,7 +43,7 @@ export default ['i18n', function(i18n) { awToolTip: i18n._('Create a new team'), actionClass: 'btn List-buttonSubmit', buttonContent: '+ ' + i18n._('ADD'), - ngShow: 'canAdd' + ngShow: 'canAdd && canEdit' } }, diff --git a/awx/ui/client/src/users/edit/users-edit.controller.js b/awx/ui/client/src/users/edit/users-edit.controller.js index b268e619f3..82ae48af1d 100644 --- a/awx/ui/client/src/users/edit/users-edit.controller.js +++ b/awx/ui/client/src/users/edit/users-edit.controller.js @@ -14,14 +14,15 @@ const user_type_options = [ export default ['$scope', '$rootScope', '$stateParams', 'UserForm', 'Rest', 'ProcessErrors', 'GetBasePath', 'Wait', 'CreateSelect2', - '$state', 'i18n', + '$state', 'i18n', 'resolvedModels', function($scope, $rootScope, $stateParams, UserForm, Rest, ProcessErrors, - GetBasePath, Wait, CreateSelect2, $state, i18n) { + GetBasePath, Wait, CreateSelect2, $state, i18n, models) { for (var i = 0; i < user_type_options.length; i++) { user_type_options[i].label = i18n._(user_type_options[i].label); } + const { me } = models; var form = UserForm, master = {}, id = $stateParams.user_id, @@ -30,7 +31,8 @@ export default ['$scope', '$rootScope', '$stateParams', 'UserForm', 'Rest', init(); function init() { - $scope.canAdd = true; + $scope.canEdit = me.get('summary_fields.user_capabilities.edit'); + $scope.isOrgAdmin = me.get('related.admin_of_organizations.count') > 0; $scope.isCurrentlyLoggedInUser = (parseInt(id) === $rootScope.current_user.id); $scope.hidePagination = false; $scope.hideSmartSearch = false; diff --git a/awx/ui/client/src/users/list/users-list.controller.js b/awx/ui/client/src/users/list/users-list.controller.js index 9b95081a49..b684a5bbdb 100644 --- a/awx/ui/client/src/users/list/users-list.controller.js +++ b/awx/ui/client/src/users/list/users-list.controller.js @@ -30,12 +30,12 @@ export default ['$scope', '$rootScope', 'Rest', 'UserList', 'Prompt', init(); function init() { - const canEdit = me.get('summary_fields.user_capabilities.edit'); + $scope.canEdit = me.get('summary_fields.user_capabilities.edit'); $scope.canAdd = false; rbacUiControlService.canAdd('users') .then(function(params) { - $scope.canAdd = params.canAdd && canEdit; + $scope.canAdd = params.canAdd; }); // search init diff --git a/awx/ui/client/src/users/main.js b/awx/ui/client/src/users/main.js index 9f4937bf4b..3701d4f626 100644 --- a/awx/ui/client/src/users/main.js +++ b/awx/ui/client/src/users/main.js @@ -44,6 +44,15 @@ angular.module('Users', []) activityStreamTarget: 'user' }, resolve: { + edit: { + resolvedModels: ['MeModel', '$q', function(Me, $q) { + const promises= { + me: new Me('get').then((me) => me.extend('get', 'admin_of_organizations')) + }; + + return $q.all(promises); + }] + }, list: { resolvedModels: ['MeModel', '$q', function(Me, $q) { const promises= { diff --git a/awx/ui/client/src/users/users.form.js b/awx/ui/client/src/users/users.form.js index 925ec999b6..93a1264edd 100644 --- a/awx/ui/client/src/users/users.form.js +++ b/awx/ui/client/src/users/users.form.js @@ -21,7 +21,7 @@ export default ['i18n', function(i18n) { forceListeners: true, tabs: true, messageBar: { - ngShow: '!user_is_system_auditor && !canAdd', + ngShow: 'isOrgAdmin && !canEdit', message: i18n._("Contact your System Administrator to grant you the appropriate permissions to add and edit Users and Teams.") }, fields: { diff --git a/awx/ui/client/src/users/users.list.js b/awx/ui/client/src/users/users.list.js index c53eb79887..95ff26f5e6 100644 --- a/awx/ui/client/src/users/users.list.js +++ b/awx/ui/client/src/users/users.list.js @@ -48,7 +48,7 @@ export default ['i18n', function(i18n) { awToolTip: i18n._('Create a new user'), actionClass: 'btn List-buttonSubmit', buttonContent: '+ ' + i18n._('ADD'), - ngShow: 'canAdd' + ngShow: 'canAdd && canEdit' } },