parent
b5efc57655
commit
391d70d9ec
18 changed files with 496 additions and 224 deletions
|
@ -1,7 +1,8 @@
|
|||
/**
|
||||
* Service which defines the various role groups.
|
||||
*/
|
||||
angular.module('quay').factory('RolesService', ['UtilService', 'Restangular', 'ApiService', function(UtilService, Restangular, ApiService) {
|
||||
angular.module('quay').factory('RolesService', ['UtilService', 'Restangular', 'ApiService', 'UserService',
|
||||
function(UtilService, Restangular, ApiService, UserService) {
|
||||
var roleService = {};
|
||||
|
||||
roleService.repoRolesOrNone = [
|
||||
|
@ -20,14 +21,22 @@ angular.module('quay').factory('RolesService', ['UtilService', 'Restangular', 'A
|
|||
{ 'id': 'admin', 'title': 'Admin', 'kind': 'primary', 'description': 'Full admin access to the organization' }
|
||||
];
|
||||
|
||||
var getPermissionEndpoint = function(repository, entityName, kind) {
|
||||
var getPermissionEndpoint = function(repository, entityName, entityKind) {
|
||||
if (entityKind == 'robot') {
|
||||
entityKind = 'user';
|
||||
}
|
||||
|
||||
var namespace = repository.namespace;
|
||||
var name = repository.name;
|
||||
var url = UtilService.getRestUrl('repository', namespace, name, 'permissions', kind, entityName);
|
||||
var url = UtilService.getRestUrl('repository', namespace, name, 'permissions', entityKind, entityName);
|
||||
return Restangular.one(url);
|
||||
};
|
||||
|
||||
roleService.deleteRepositoryRole = function(repository, entityKind, entityName, callback) {
|
||||
if (entityKind == 'robot') {
|
||||
entityKind = 'user';
|
||||
}
|
||||
|
||||
var errorDisplay = ApiService.errorDisplay('Cannot change permission', function(resp) {
|
||||
callback(false);
|
||||
});
|
||||
|
@ -39,6 +48,15 @@ angular.module('quay').factory('RolesService', ['UtilService', 'Restangular', 'A
|
|||
};
|
||||
|
||||
roleService.setRepositoryRole = function(repository, role, entityKind, entityName, callback) {
|
||||
if (role == 'none') {
|
||||
roleService.deleteRepositoryRole(repository, entityKind, entityName, callback);
|
||||
return;
|
||||
}
|
||||
|
||||
if (entityKind == 'robot') {
|
||||
entityKind = 'user';
|
||||
}
|
||||
|
||||
var errorDisplay = ApiService.errorDisplay('Cannot change permission', function(resp) {
|
||||
callback(false);
|
||||
});
|
||||
|
@ -53,5 +71,30 @@ angular.module('quay').factory('RolesService', ['UtilService', 'Restangular', 'A
|
|||
}, errorDisplay);
|
||||
};
|
||||
|
||||
roleService.getRepoPermissions = function(namespace, entityKind, entityName, callback) {
|
||||
var errorHandler = ApiService.errorDisplay('Could not load permissions', callback);
|
||||
|
||||
if (entityKind == 'team') {
|
||||
var params = {
|
||||
'orgname': namespace,
|
||||
'teamname': entityName
|
||||
};
|
||||
|
||||
ApiService.getTeamPermissions(null, params).then(function(resp) {
|
||||
callback(resp.permissions);
|
||||
}, errorHandler);
|
||||
} else if (entityKind == 'robot') {
|
||||
var parts = entityName.split('+');
|
||||
var shortName = parts[1];
|
||||
|
||||
var orgname = UserService.isOrganization(namespace) ? namespace : null;
|
||||
ApiService.getRobotPermissions(orgname, null, {'robot_shortname': shortName}).then(function(resp) {
|
||||
callback(resp.permissions);
|
||||
}, errorHandler);
|
||||
} else {
|
||||
throw Error('Unknown entity kind ' + entityKind);
|
||||
}
|
||||
};
|
||||
|
||||
return roleService;
|
||||
}]);
|
||||
|
|
Reference in a new issue