1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-08-05 13:55:21 +02:00

feat(global): introduce user teams and new UAC system (#868)

This commit is contained in:
Anthony Lapenna 2017-05-23 20:56:10 +02:00 committed by GitHub
parent a380fd9adc
commit 5523fc9023
160 changed files with 7112 additions and 3166 deletions

View file

@ -8,21 +8,21 @@ angular.module('portainer.helpers')
role: ''
};
if (_.startsWith(info.ServerVersion, 'swarm')) {
mode.provider = "DOCKER_SWARM";
mode.provider = 'DOCKER_SWARM';
if (info.SystemStatus[0][1] === 'primary') {
mode.role = "PRIMARY";
mode.role = 'PRIMARY';
} else {
mode.role = "REPLICA";
mode.role = 'REPLICA';
}
} else {
if (!info.Swarm || _.isEmpty(info.Swarm.NodeID)) {
mode.provider = "DOCKER_STANDALONE";
mode.provider = 'DOCKER_STANDALONE';
} else {
mode.provider = "DOCKER_SWARM_MODE";
mode.provider = 'DOCKER_SWARM_MODE';
if (info.Swarm.ControlAvailable) {
mode.role = "MANAGER";
mode.role = 'MANAGER';
} else {
mode.role = "WORKER";
mode.role = 'WORKER';
}
}
}

View file

@ -13,10 +13,10 @@ angular.module('portainer.helpers')
getManagerIP: function(nodes) {
var managerIp;
for (var n in nodes) {
if (undefined === nodes[n].ManagerStatus || nodes[n].ManagerStatus.Reachability !== "reachable") {
if (undefined === nodes[n].ManagerStatus || nodes[n].ManagerStatus.Reachability !== 'reachable') {
continue;
}
managerIp = nodes[n].ManagerStatus.Addr.split(":")[0];
managerIp = nodes[n].ManagerStatus.Addr.split(':')[0];
}
return managerIp;
}

View file

@ -0,0 +1,42 @@
angular.module('portainer.helpers')
.factory('ResourceControlHelper', [function ResourceControlHelperFactory() {
'use strict';
var helper = {};
helper.retrieveAuthorizedUsers = function(resourceControl, users) {
var authorizedUserNames = [];
angular.forEach(resourceControl.UserAccesses, function(access) {
var user = _.find(users, { Id: access.UserId });
if (user) {
authorizedUserNames.push(user);
}
});
return authorizedUserNames;
};
helper.retrieveAuthorizedTeams = function(resourceControl, teams) {
var authorizedTeamNames = [];
angular.forEach(resourceControl.TeamAccesses, function(access) {
var team = _.find(teams, { Id: access.TeamId });
if (team) {
authorizedTeamNames.push(team);
}
});
return authorizedTeamNames;
};
helper.isLeaderOfAnyRestrictedTeams = function(userMemberships, resourceControl) {
var isTeamLeader = false;
for (var i = 0; i < userMemberships.length; i++) {
var membership = userMemberships[i];
var found = _.find(resourceControl.TeamAccesses, { TeamId :membership.TeamId });
if (found && membership.Role === 1) {
isTeamLeader = true;
break;
}
}
return isTeamLeader;
};
return helper;
}]);

View file

@ -83,7 +83,7 @@ angular.module('portainer.helpers')
if (volume.containerPath) {
var binding;
if (volume.type === 'auto') {
binding = generatedVolumesPile.pop().Name + ':' + volume.containerPath;
binding = generatedVolumesPile.pop().Id + ':' + volume.containerPath;
} else if (volume.type !== 'auto' && volume.name) {
binding = volume.name + ':' + volume.containerPath;
}

15
app/helpers/userHelper.js Normal file
View file

@ -0,0 +1,15 @@
angular.module('portainer.helpers')
.factory('UserHelper', [function UserHelperFactory() {
'use strict';
var helper = {};
helper.filterNonAdministratorUsers = function(users) {
return users.filter(function (user) {
if (user.Role !== 1) {
return user;
}
});
};
return helper;
}]);