Merge pull request #282 from mabashian/5092-cred-permissions

Credential permissions fixes
This commit is contained in:
Michael Abashian 2017-08-16 14:50:17 -04:00 committed by GitHub
commit cfc83f5a23
2 changed files with 63 additions and 9 deletions

View File

@ -149,10 +149,10 @@ function LegacyCredentialsService (pathService) {
'QuerySet',
'$stateParams',
'GetBasePath',
(list, qs, $stateParams, GetBasePath) => {
let path = GetBasePath(list.basePath) || GetBasePath(list.name);
'resourceData',
(list, qs, $stateParams, GetBasePath, resourceData) => {
let path = resourceData.data.organization ? GetBasePath('organizations') + `${resourceData.data.organization}/users` : ((list.basePath) || GetBasePath(list.name));
return qs.search(path, $stateParams.user_search);
}
],
teamsDataset: [
@ -160,9 +160,19 @@ function LegacyCredentialsService (pathService) {
'QuerySet',
'$stateParams',
'GetBasePath',
(list, qs, $stateParams, GetBasePath) => {
'resourceData',
(list, qs, $stateParams, GetBasePath, resourceData) => {
let path = GetBasePath(list.basePath) || GetBasePath(list.name);
return qs.search(path, $stateParams.team_search);
if(!resourceData.data.organization) {
return null;
}
else {
$stateParams[`${list.iterator}_search`].organization = resourceData.data.organization;
return qs.search(path, $stateParams.team_search);
}
}
],
resourceData: ['CredentialModel', '$stateParams', (Credential, $stateParams) => {
@ -198,7 +208,8 @@ function LegacyCredentialsService (pathService) {
teams-dataset='$resolve.teamsDataset'
selected='allSelected'
resource-data='$resolve.resourceData'
title='Add Users / Teams'>
without-team-permissions='{{$resolve.resourceData.data.organization ? null : true}}'
title='{{$resolve.resourceData.data.organization ? "Add Users / Teams" : "Add Users"}}'>
</add-rbac-resource>`
}
},

View File

@ -313,15 +313,58 @@ function($injector, $stateExtender, $log, i18n) {
return qs.search(path, $stateParams[`${list.iterator}_search`]);
}
],
credentialsDataset: ['CredentialList', 'QuerySet', '$stateParams', 'GetBasePath', 'resourceData',
function(list, qs, $stateParams, GetBasePath, resourceData) {
credentialsDataset: ['CredentialList', 'QuerySet', '$stateParams', 'GetBasePath', 'resourceData', 'Rest', '$q',
function(list, qs, $stateParams, GetBasePath, resourceData, Rest, $q) {
let path = GetBasePath(list.basePath) || GetBasePath(list.name);
if(resourceData.data.type === "team") {
$stateParams[`${list.iterator}_search`].organization = resourceData.data.organization;
}
return qs.search(path, $stateParams[`${list.iterator}_search`]);
if(resourceData.data.type === "user") {
let resolve = $q.defer();
let getMoreOrgs = function(data, arr) {
Rest.setUrl(data.next);
Rest.get()
.then(function (resData) {
if (data.next) {
getMoreOrgs(resData.data, arr.concat(resData.data.results));
} else {
resolve.resolve(arr.concat(resData.data.results));
}
});
};
Rest.setUrl(GetBasePath('users') + `${resourceData.data.id}/organizations?page_size=200`);
Rest.get()
.then(function(resData) {
if (resData.data.next) {
getMoreOrgs(resData.data, resData.data.results);
} else {
resolve.resolve(resData.data.results);
}
});
return resolve.promise.then(function (organizations) {
if(organizations && organizations.length > 0) {
let orgIds = _.map(organizations, function(organization){
return organization.id;
});
$stateParams[`${list.iterator}_search`].or__organization = 'null';
$stateParams[`${list.iterator}_search`].or__organization__in = orgIds.join();
}
return qs.search(path, $stateParams[`${list.iterator}_search`]);
});
}
else {
return qs.search(path, $stateParams[`${list.iterator}_search`]);
}
}
],
organizationsDataset: ['OrganizationList', 'QuerySet', '$stateParams', 'GetBasePath',