Add ui to support accessRestriction for applinks

This commit is contained in:
Johannes Zellner
2022-07-07 19:45:13 +02:00
parent a9cc3c7ccc
commit 56aa75e866
2 changed files with 73 additions and 0 deletions

View File

@@ -27,6 +27,9 @@ angular.module('Application').controller('AppsController', ['$scope', '$translat
$scope.appSearch = '';
$scope.groups = [ GROUP_ACCESS_UNSET ];
$scope.allUsers = [];
$scope.allGroups = [];
$translate(['apps.stateFilterHeader', 'apps.domainsFilterHeader', 'apps.groupsFilterHeader', 'app.states.running', 'app.states.stopped', 'app.states.notResponding', 'app.states.updateAvailable']).then(function (tr) {
if (tr['apps.domainsFilterHeader']) ALL_DOMAINS_DOMAIN.domain = tr['apps.domainsFilterHeader'];
if (tr['apps.groupsFilterHeader']) GROUP_ACCESS_UNSET.name = tr['apps.groupsFilterHeader'];
@@ -95,6 +98,8 @@ angular.module('Application').controller('AppsController', ['$scope', '$translat
upstreamUri: '',
label: '',
tags: '',
accessRestrictionOption: 'any',
accessRestriction: { users: [], groups: [] },
show: function () {
$scope.applinksAdd.error = {};
@@ -116,9 +121,17 @@ angular.module('Application').controller('AppsController', ['$scope', '$translat
$scope.applinksAdd.busy = true;
var accessRestriction = null;
if ($scope.applinksAdd.accessRestrictionOption === 'groups') {
accessRestriction = { users: [], groups: [] };
accessRestriction.users = $scope.applinksAdd.accessRestriction.users.map(function (u) { return u.id; });
accessRestriction.groups = $scope.applinksAdd.accessRestriction.groups.map(function (g) { return g.id; });
}
var data = {
upstreamUri: $scope.applinksAdd.upstreamUri,
label: $scope.applinksAdd.label,
accessRestriction: accessRestriction,
tags: $scope.applinksAdd.tags.split(' ').map(function (t) { return t.trim(); }).filter(function (t) { return !!t; })
};
@@ -142,6 +155,13 @@ angular.module('Application').controller('AppsController', ['$scope', '$translat
upstreamUri: '',
label: '',
tags: '',
accessRestrictionOption: '',
accessRestriction: { users: [], groups: [] },
isAccessRestrictionValid: function () {
var tmp = $scope.applinksEdit.accessRestriction;
return !!(tmp.users.length || tmp.groups.length);
},
show: function (applink) {
$scope.applinksEdit.error = {};
@@ -150,6 +170,19 @@ angular.module('Application').controller('AppsController', ['$scope', '$translat
$scope.applinksEdit.id = applink.id;
$scope.applinksEdit.upstreamUri = applink.upstreamUri;
$scope.applinksEdit.label = applink.label;
$scope.applinksEdit.accessRestrictionOption = applink.accessRestriction ? 'groups' : 'any';
$scope.applinksEdit.accessRestriction = { users: [], groups: [] };
var userSet, groupSet;
if (applink.accessRestriction) {
userSet = {};
applink.accessRestriction.users.forEach(function (uid) { userSet[uid] = true; });
$scope.allUsers.forEach(function (u) { if (userSet[u.id] === true) $scope.applink.accessRestriction.users.push(u); });
groupSet = {};
if (applink.accessRestriction.groups) applink.accessRestriction.groups.forEach(function (gid) { groupSet[gid] = true; });
$scope.allGroups.forEach(function (g) { if (groupSet[g.id] === true) $scope.applink.accessRestriction.groups.push(g); });
}
// translate for tag-input
$scope.applinksEdit.tags = applink.tags ? applink.tags.join(' ') : '';
@@ -165,9 +198,17 @@ angular.module('Application').controller('AppsController', ['$scope', '$translat
submit: function () {
$scope.applinksEdit.busyEdit = true;
var accessRestriction = null;
if ($scope.applinksEdit.accessRestrictionOption === 'groups') {
accessRestriction = { users: [], groups: [] };
accessRestriction.users = $scope.applinksEdit.accessRestriction.users.map(function (u) { return u.id; });
accessRestriction.groups = $scope.applinksEdit.accessRestriction.groups.map(function (g) { return g.id; });
}
var data = {
upstreamUri: $scope.applinksEdit.upstreamUri,
label: $scope.applinksEdit.label,
accessRestriction: accessRestriction,
tags: $scope.applinksEdit.tags.split(' ').map(function (t) { return t.trim(); }).filter(function (t) { return !!t; })
};
@@ -230,6 +271,7 @@ angular.module('Application').controller('AppsController', ['$scope', '$translat
if (error) Client.error(error);
$scope.groups = [ GROUP_ACCESS_UNSET ].concat(result);
$scope.allGroups = result;
if (localStorage.selectedGroup) $scope.selectedGroup = $scope.groups.find(function (g) { return g.id === localStorage.selectedGroup; }) || GROUP_ACCESS_UNSET;
});
@@ -242,6 +284,12 @@ angular.module('Application').controller('AppsController', ['$scope', '$translat
if (localStorage.selectedDomain) $scope.selectedDomain = $scope.filterDomains.find(function (d) { return d.domain === localStorage.selectedDomain; }) || ALL_DOMAINS_DOMAIN;
});
Client.getAllUsers(function (error, users) {
if (error) Client.error(error);
$scope.allUsers = users;
});
});
// setup all the dialog focus handling