|
@@ -18,18 +18,46 @@
|
|
|
'use strict';
|
|
|
|
|
|
angular.module('ambariAdminConsole')
|
|
|
-.controller('UsersShowCtrl', ['$scope', '$routeParams', 'User', '$modal', '$location', 'ConfirmationModal', 'uiAlert', 'Auth', function($scope, $routeParams, User, $modal, $location, ConfirmationModal, uiAlert, Auth) {
|
|
|
+.controller('UsersShowCtrl', ['$scope', '$routeParams', 'User', '$modal', '$location', 'ConfirmationModal', 'uiAlert', 'Auth', 'getDifference', 'Group', '$q', function($scope, $routeParams, User, $modal, $location, ConfirmationModal, uiAlert, Auth, getDifference, Group, $q) {
|
|
|
+
|
|
|
+ function loadUserInfo(){
|
|
|
+ User.get($routeParams.id).then(function(data) {
|
|
|
+ $scope.user = data.Users;
|
|
|
+ $scope.isCurrentUser = $scope.user.user_name === Auth.getCurrentUser();
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ loadUserInfo();
|
|
|
$scope.user = {};
|
|
|
$scope.isCurrentUser = true;
|
|
|
+ $scope.dataLoaded = false;
|
|
|
|
|
|
$scope.isGroupEditing = false;
|
|
|
$scope.enableGroupEditing = function() {
|
|
|
$scope.isGroupEditing = true;
|
|
|
- $scope.editingGroupsList = $scope.user.user_groups.join();
|
|
|
+ $scope.editingGroupsList = angular.copy($scope.user.groups);
|
|
|
};
|
|
|
|
|
|
$scope.updateGroups = function() {
|
|
|
- $scope.user.user_groups = $scope.editingGroupsList.split(',');
|
|
|
+ var groups = $scope.editingGroupsList.toString().split(',').filter(function(item) {return item.trim();}).map(function(item) {return item.trim()});
|
|
|
+ var diff = getDifference($scope.user.groups, groups);
|
|
|
+ var promises = [];
|
|
|
+ // Remove user from groups
|
|
|
+ angular.forEach(diff.del, function(groupName) {
|
|
|
+ promises.push(Group.removeMemberFromGroup(groupName, $scope.user.user_name).catch(function(data) {
|
|
|
+ uiAlert.danger(data.data.status, data.data.message);
|
|
|
+ }));
|
|
|
+ });
|
|
|
+ // Add user to groups
|
|
|
+ angular.forEach(diff.add, function(groupName) {
|
|
|
+ promises.push(Group.addMemberToGroup(groupName, $scope.user.user_name).catch(function(data) {
|
|
|
+ uiAlert.danger(data.data.status, data.data.message);
|
|
|
+ }));
|
|
|
+ });
|
|
|
+ $q.all(promises).then(function() {
|
|
|
+ loadUserInfo();
|
|
|
+ });
|
|
|
+ // $scope.user.user_groups = $scope.editingGroupsList.split(',');
|
|
|
$scope.isGroupEditing = false;
|
|
|
};
|
|
|
|
|
@@ -76,12 +104,10 @@ angular.module('ambariAdminConsole')
|
|
|
|
|
|
$scope.toggleUserActive = function() {
|
|
|
User.setActive($scope.user.user_name, !$scope.user.active);
|
|
|
- };
|
|
|
-
|
|
|
- User.get($routeParams.id).then(function(data) {
|
|
|
- $scope.user = data.Users;
|
|
|
- $scope.isCurrentUser = $scope.user.user_name === Auth.getCurrentUser();
|
|
|
- });
|
|
|
+ };
|
|
|
+ $scope.toggleUserAdmin = function() {
|
|
|
+ User.setAdmin($scope.user.user_name, !$scope.user.admin);
|
|
|
+ };
|
|
|
|
|
|
$scope.deleteUser = function() {
|
|
|
ConfirmationModal.show('Delete User', 'Are you sure you want to delete user "'+ $scope.user.user_name +'"?').then(function() {
|
|
@@ -90,4 +116,32 @@ angular.module('ambariAdminConsole')
|
|
|
});
|
|
|
});
|
|
|
};
|
|
|
+
|
|
|
+ // Load privilegies
|
|
|
+ User.getPrivilegies($routeParams.id).then(function(data) {
|
|
|
+ var privilegies = {
|
|
|
+ clusters: {},
|
|
|
+ views: {}
|
|
|
+ };
|
|
|
+ angular.forEach(data.data.items, function(privilegie) {
|
|
|
+ privilegie = privilegie.PrivilegeInfo;
|
|
|
+ if(privilegie.type === 'CLUSTER'){
|
|
|
+ // This is cluster
|
|
|
+ privilegies.clusters[privilegie.cluster_name] = privilegies.clusters[privilegie.cluster_name] || '';
|
|
|
+ privilegies.clusters[privilegie.cluster_name] += privilegies.clusters[privilegie.cluster_name] ? ', ' + privilegie.permission_name : privilegie.permission_name;
|
|
|
+ } else if ( privilegie.type === 'VIEW'){
|
|
|
+ privilegies.views[privilegie.instance_name] = privilegies.views[privilegie.instance_name] || { privileges:''};
|
|
|
+ privilegies.views[privilegie.instance_name].version = privilegie.version;
|
|
|
+ privilegies.views[privilegie.instance_name].view_name = privilegie.view_name;
|
|
|
+ privilegies.views[privilegie.instance_name].privileges += privilegies.views[privilegie.instance_name].privileges ? ', ' + privilegie.permission_name : privilegie.permission_name;
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ $scope.privileges = data.data.items.length ? privilegies : null;
|
|
|
+ $scope.dataLoaded = true;
|
|
|
+
|
|
|
+ }).catch(function(data) {
|
|
|
+ uiAlert.danger(data.data.status, data.data.message);
|
|
|
+ });
|
|
|
}]);
|