From 94bbab566b8622d908de563e2d3913efa620cb0a Mon Sep 17 00:00:00 2001 From: Chris Houseknecht Date: Tue, 19 Nov 2013 20:39:28 +0000 Subject: [PATCH] Only allow user with super_user access to see activity stream button. Fixed collision between is_superuser rootscope variable and credential.is_superuser on credential detail page. Added AS to user/n/permissions page. --- awx/ui/static/js/app.js | 6 +++++- awx/ui/static/js/controllers/Authentication.js | 1 + awx/ui/static/js/controllers/Users.js | 4 ++++ awx/ui/static/js/forms/Credentials.js | 3 ++- awx/ui/static/js/forms/Inventories.js | 3 ++- awx/ui/static/js/forms/InventoryHosts.js | 3 ++- awx/ui/static/js/forms/JobTemplates.js | 3 ++- awx/ui/static/js/forms/Organizations.js | 3 ++- awx/ui/static/js/forms/Permissions.js | 11 +++++++++++ awx/ui/static/js/forms/Projects.js | 3 ++- awx/ui/static/js/forms/Teams.js | 3 ++- awx/ui/static/js/forms/Users.js | 3 ++- awx/ui/static/js/lists/Credentials.js | 3 ++- awx/ui/static/js/lists/HomeGroups.js | 3 ++- awx/ui/static/js/lists/HomeHosts.js | 3 ++- awx/ui/static/js/lists/Inventories.js | 3 ++- awx/ui/static/js/lists/InventorySummary.js | 3 ++- awx/ui/static/js/lists/JobTemplates.js | 3 ++- awx/ui/static/js/lists/Organizations.js | 3 ++- awx/ui/static/js/lists/Permissions.js | 10 ++++++++++ awx/ui/static/js/lists/Projects.js | 3 ++- awx/ui/static/js/lists/Teams.js | 3 ++- awx/ui/static/js/lists/Users.js | 3 ++- awx/ui/static/js/widgets/Stream.js | 4 ++-- awx/ui/static/lib/ansible/AuthService.js | 11 +++++++++-- awx/ui/static/partials/home.html | 2 +- 26 files changed, 79 insertions(+), 24 deletions(-) diff --git a/awx/ui/static/js/app.js b/awx/ui/static/js/app.js index 6b48bd8be0..0df2aa7337 100644 --- a/awx/ui/static/js/app.js +++ b/awx/ui/static/js/app.js @@ -301,7 +301,7 @@ angular.module('ansible', [ } CheckLicense(); } - + // Make the correct tab active var base = $location.path().replace(/^\//,'').split('/')[0]; if (base == '') { @@ -319,6 +319,10 @@ angular.module('ansible', [ $cookieStore.put('sessionExpired', false); $location.path('/login'); } + else { + // If browser refresh, set the user_is_superuser value + $rootScope['user_is_superuser'] = Authorization.getUserInfo('is_superuser'); + } // If browser refresh, activate the correct tab var base = ($location.path().replace(/^\//,'').split('/')[0]); diff --git a/awx/ui/static/js/controllers/Authentication.js b/awx/ui/static/js/controllers/Authentication.js index bb1a7ae34f..163bededd3 100644 --- a/awx/ui/static/js/controllers/Authentication.js +++ b/awx/ui/static/js/controllers/Authentication.js @@ -96,6 +96,7 @@ function Authenticate($cookieStore, $window, $scope, $rootScope, $location, Auth Authorization.getUser() .success(function(data, status, headers, config) { Authorization.setUserInfo(data); + $rootScope['user_is_superuser'] = data.results[0].is_superuser; Authorization.getLicense() .success(function(data, status, headers, config) { Authorization.setLicense(data['license_info']); diff --git a/awx/ui/static/js/controllers/Users.js b/awx/ui/static/js/controllers/Users.js index 0df6654ab3..b99e0e1940 100644 --- a/awx/ui/static/js/controllers/Users.js +++ b/awx/ui/static/js/controllers/Users.js @@ -208,6 +208,10 @@ function UsersEdit ($scope, $rootScope, $compile, $location, $log, $routeParams, var scope = generator.inject(form, {mode: 'edit', related: true}); generator.reset(); + if (scope.removePostRefresh) { + scope.removePostRefresh(); + } + scope.PermissionAddAllowed = false; // After the Organization is loaded, retrieve each related set diff --git a/awx/ui/static/js/forms/Credentials.js b/awx/ui/static/js/forms/Credentials.js index 88dd7b4c24..5d54777445 100644 --- a/awx/ui/static/js/forms/Credentials.js +++ b/awx/ui/static/js/forms/Credentials.js @@ -23,7 +23,8 @@ angular.module('CredentialFormDefinition', []) dataPlacement: "top", icon: "icon-comments-alt", mode: 'edit', - iconSize: 'large' + iconSize: 'large', + ngShow: "user_is_superuser" } }, diff --git a/awx/ui/static/js/forms/Inventories.js b/awx/ui/static/js/forms/Inventories.js index 4aad1016ed..d774bdce25 100644 --- a/awx/ui/static/js/forms/Inventories.js +++ b/awx/ui/static/js/forms/Inventories.js @@ -24,7 +24,8 @@ angular.module('InventoryFormDefinition', []) dataPlacement: "top", icon: "icon-comments-alt", mode: 'edit', - iconSize: 'large' + iconSize: 'large', + ngShow: "user_is_superuser" } }, diff --git a/awx/ui/static/js/forms/InventoryHosts.js b/awx/ui/static/js/forms/InventoryHosts.js index 43ba98dc32..a75070ae90 100644 --- a/awx/ui/static/js/forms/InventoryHosts.js +++ b/awx/ui/static/js/forms/InventoryHosts.js @@ -112,7 +112,8 @@ angular.module('InventoryHostsFormDefinition', []) dataPlacement: "top", icon: "icon-comments-alt", mode: 'edit', - iconSize: 'large' + iconSize: 'large', + ngShow: "user_is_superuser" } }, diff --git a/awx/ui/static/js/forms/JobTemplates.js b/awx/ui/static/js/forms/JobTemplates.js index 6966482b47..5bdb90eaef 100644 --- a/awx/ui/static/js/forms/JobTemplates.js +++ b/awx/ui/static/js/forms/JobTemplates.js @@ -24,7 +24,8 @@ angular.module('JobTemplateFormDefinition', []) dataPlacement: "top", icon: "icon-comments-alt", mode: 'edit', - iconSize: 'large' + iconSize: 'large', + ngShow: "user_is_superuser" } }, diff --git a/awx/ui/static/js/forms/Organizations.js b/awx/ui/static/js/forms/Organizations.js index cad661817c..65e97d2f46 100644 --- a/awx/ui/static/js/forms/Organizations.js +++ b/awx/ui/static/js/forms/Organizations.js @@ -23,7 +23,8 @@ angular.module('OrganizationFormDefinition', []) dataPlacement: "top", icon: "icon-comments-alt", mode: 'edit', - iconSize: 'large' + iconSize: 'large', + ngShow: "user_is_superuser" } }, diff --git a/awx/ui/static/js/forms/Permissions.js b/awx/ui/static/js/forms/Permissions.js index 0a6bea2c1f..93eace81c8 100644 --- a/awx/ui/static/js/forms/Permissions.js +++ b/awx/ui/static/js/forms/Permissions.js @@ -16,6 +16,17 @@ angular.module('PermissionFormDefinition', []) name: 'permission', //entity or model name in singular form well: true, //Wrap the form with TB well/ + stream: { + 'class': "btn-primary btn-xs activity-btn", + ngClick: "showActivity()", + awToolTip: "View Activity Stream", + dataPlacement: "top", + icon: "icon-comments-alt", + mode: 'edit', + iconSize: 'large', + ngShow: "user_is_superuser" + }, + fields: { category: { label: 'Permission Type', diff --git a/awx/ui/static/js/forms/Projects.js b/awx/ui/static/js/forms/Projects.js index c38477326c..fa26566ab2 100644 --- a/awx/ui/static/js/forms/Projects.js +++ b/awx/ui/static/js/forms/Projects.js @@ -25,7 +25,8 @@ angular.module('ProjectFormDefinition', []) dataPlacement: "top", icon: "icon-comments-alt", mode: 'edit', - iconSize: 'large' + iconSize: 'large', + ngShow: "user_is_superuser" } }, diff --git a/awx/ui/static/js/forms/Teams.js b/awx/ui/static/js/forms/Teams.js index e93d4f4a87..604d39217c 100644 --- a/awx/ui/static/js/forms/Teams.js +++ b/awx/ui/static/js/forms/Teams.js @@ -27,7 +27,8 @@ angular.module('TeamFormDefinition', []) dataPlacement: "top", icon: "icon-comments-alt", mode: 'edit', - iconSize: 'large' + iconSize: 'large', + ngShow: "user_is_superuser" } }, diff --git a/awx/ui/static/js/forms/Users.js b/awx/ui/static/js/forms/Users.js index 7d497de179..e05170a55b 100644 --- a/awx/ui/static/js/forms/Users.js +++ b/awx/ui/static/js/forms/Users.js @@ -24,7 +24,8 @@ angular.module('UserFormDefinition', []) dataPlacement: "top", icon: "icon-comments-alt", mode: 'edit', - iconSize: 'large' + iconSize: 'large', + ngShow: "user_is_superuser" } }, diff --git a/awx/ui/static/js/lists/Credentials.js b/awx/ui/static/js/lists/Credentials.js index 1f525c15c4..fb8194840f 100644 --- a/awx/ui/static/js/lists/Credentials.js +++ b/awx/ui/static/js/lists/Credentials.js @@ -69,7 +69,8 @@ angular.module('CredentialsListDefinition', []) dataPlacement: "top", icon: "icon-comments-alt", mode: 'all', - iconSize: 'large' + iconSize: 'large', + ngShow: "user_is_superuser" } }, diff --git a/awx/ui/static/js/lists/HomeGroups.js b/awx/ui/static/js/lists/HomeGroups.js index 06af80dd7d..80a293fd70 100644 --- a/awx/ui/static/js/lists/HomeGroups.js +++ b/awx/ui/static/js/lists/HomeGroups.js @@ -117,7 +117,8 @@ angular.module('HomeGroupListDefinition', []) dataPlacement: "top", icon: "icon-comments-alt", mode: 'all', - iconSize: 'large' + iconSize: 'large', + ngShow: "user_is_superuser" } }, diff --git a/awx/ui/static/js/lists/HomeHosts.js b/awx/ui/static/js/lists/HomeHosts.js index d2646db0cf..0891c97b80 100644 --- a/awx/ui/static/js/lists/HomeHosts.js +++ b/awx/ui/static/js/lists/HomeHosts.js @@ -88,7 +88,8 @@ angular.module('HomeHostListDefinition', []) dataPlacement: "top", icon: "icon-comments-alt", mode: 'all', - iconSize: 'large' + iconSize: 'large', + ngShow: "user_is_superuser" } }, diff --git a/awx/ui/static/js/lists/Inventories.js b/awx/ui/static/js/lists/Inventories.js index 1957445812..c7ba2b425a 100644 --- a/awx/ui/static/js/lists/Inventories.js +++ b/awx/ui/static/js/lists/Inventories.js @@ -96,7 +96,8 @@ angular.module('InventoriesListDefinition', []) dataPlacement: "top", icon: "icon-comments-alt", mode: 'all', - iconSize: 'large' + iconSize: 'large', + ngShow: "user_is_superuser" } }, diff --git a/awx/ui/static/js/lists/InventorySummary.js b/awx/ui/static/js/lists/InventorySummary.js index a5433885f9..ad44e9280b 100644 --- a/awx/ui/static/js/lists/InventorySummary.js +++ b/awx/ui/static/js/lists/InventorySummary.js @@ -143,7 +143,8 @@ angular.module('InventorySummaryDefinition', []) dataPlacement: "top", icon: "icon-comments-alt", mode: 'all', - iconSize: 'large' + iconSize: 'large', + ngShow: "user_is_superuser" } }, diff --git a/awx/ui/static/js/lists/JobTemplates.js b/awx/ui/static/js/lists/JobTemplates.js index 18da0b8f76..fde8d1d784 100644 --- a/awx/ui/static/js/lists/JobTemplates.js +++ b/awx/ui/static/js/lists/JobTemplates.js @@ -45,7 +45,8 @@ angular.module('JobTemplatesListDefinition', []) dataPlacement: "top", icon: "icon-comments-alt", mode: 'all', - iconSize: 'large' + iconSize: 'large', + ngShow: "user_is_superuser" } }, diff --git a/awx/ui/static/js/lists/Organizations.js b/awx/ui/static/js/lists/Organizations.js index 6241625515..5397cbb563 100644 --- a/awx/ui/static/js/lists/Organizations.js +++ b/awx/ui/static/js/lists/Organizations.js @@ -52,7 +52,8 @@ angular.module('OrganizationListDefinition', []) dataPlacement: "top", icon: "icon-comments-alt", mode: 'all', - iconSize: 'large' + iconSize: 'large', + ngShow: "user_is_superuser" } }, diff --git a/awx/ui/static/js/lists/Permissions.js b/awx/ui/static/js/lists/Permissions.js index 995e9097e4..92296fc367 100644 --- a/awx/ui/static/js/lists/Permissions.js +++ b/awx/ui/static/js/lists/Permissions.js @@ -50,6 +50,16 @@ angular.module('PermissionListDefinition', []) "class": 'btn-success btn-xs', awToolTip: 'Add a new permission', ngShow: 'PermissionAddAllowed' + }, + stream: { + 'class': "btn-primary btn-xs activity-btn", + ngClick: "showActivity()", + awToolTip: "View Activity Stream", + dataPlacement: "top", + icon: "icon-comments-alt", + mode: 'all', + iconSize: 'large', + ngShow: "user_is_superuser" } }, diff --git a/awx/ui/static/js/lists/Projects.js b/awx/ui/static/js/lists/Projects.js index 4add716f30..9abc726e86 100644 --- a/awx/ui/static/js/lists/Projects.js +++ b/awx/ui/static/js/lists/Projects.js @@ -88,7 +88,8 @@ angular.module('ProjectsListDefinition', []) dataPlacement: "top", icon: "icon-comments-alt", mode: 'all', - iconSize: 'large' + iconSize: 'large', + ngShow: "user_is_superuser" } }, diff --git a/awx/ui/static/js/lists/Teams.js b/awx/ui/static/js/lists/Teams.js index 0b08d352bf..3e3d871fac 100644 --- a/awx/ui/static/js/lists/Teams.js +++ b/awx/ui/static/js/lists/Teams.js @@ -50,7 +50,8 @@ angular.module('TeamsListDefinition', []) dataPlacement: "top", icon: "icon-comments-alt", mode: 'all', - iconSize: 'large' + iconSize: 'large', + ngShow: "user_is_superuser" } }, diff --git a/awx/ui/static/js/lists/Users.js b/awx/ui/static/js/lists/Users.js index 7a398c3245..46b10403e1 100644 --- a/awx/ui/static/js/lists/Users.js +++ b/awx/ui/static/js/lists/Users.js @@ -50,7 +50,8 @@ angular.module('UserListDefinition', []) dataPlacement: "top", icon: "icon-comments-alt", mode: 'all', - iconSize: 'large' + iconSize: 'large', + ngShow: "user_is_superuser" } }, diff --git a/awx/ui/static/js/widgets/Stream.js b/awx/ui/static/js/widgets/Stream.js index a41a9520f7..309bea0703 100644 --- a/awx/ui/static/js/widgets/Stream.js +++ b/awx/ui/static/js/widgets/Stream.js @@ -8,7 +8,7 @@ */ angular.module('StreamWidget', ['RestServices', 'Utilities', 'StreamListDefinition', 'SearchHelper', 'PaginateHelper', - 'RefreshHelper', 'ListGenerator', 'StreamWidget']) + 'RefreshHelper', 'ListGenerator', 'StreamWidget', 'AuthService']) .factory('setStreamHeight', [ function() { return function() { @@ -20,7 +20,7 @@ angular.module('StreamWidget', ['RestServices', 'Utilities', 'StreamListDefiniti } }]) - .factory('ShowStream', [ 'setStreamHeight', function(setStreamHeight) { + .factory('ShowStream', [ 'setStreamHeight', 'Authorization', function(setStreamHeight, Authorization) { return function() { // Slide in the Stream widget diff --git a/awx/ui/static/lib/ansible/AuthService.js b/awx/ui/static/lib/ansible/AuthService.js index f104298a64..e6796ee731 100644 --- a/awx/ui/static/lib/ansible/AuthService.js +++ b/awx/ui/static/lib/ansible/AuthService.js @@ -104,7 +104,7 @@ angular.module('AuthService', ['ngCookies', 'Utilities']) setUserInfo: function(response) { // store the response values in $rootScope so we can get to them later $rootScope.current_user = response.results[0]; - $cookieStore.put('current_user', response.results[0]); //keep in session cookie incase user hits refresh + $cookieStore.put('current_user', response.results[0]); //keep in session cookie in the event of browser refresh }, restoreUserInfo: function() { @@ -113,7 +113,14 @@ angular.module('AuthService', ['ngCookies', 'Utilities']) getUserInfo: function(key) { // Access values returned from the Me API call - return ($rootScope.current_user[key]) ? $rootScope.current_user[key] : null; + if ($rootScope.current_user ) { + return $rootScope.current_user[key] + } + else { + this.restoreUserInfo(); + var cu = $cookieStore.get('current_user'); + return cu[key]; + } } } }]); diff --git a/awx/ui/static/partials/home.html b/awx/ui/static/partials/home.html index 083e5ffec4..189ce1c096 100644 --- a/awx/ui/static/partials/home.html +++ b/awx/ui/static/partials/home.html @@ -3,7 +3,7 @@
- +