Add ACL settings for app configure

This commit is contained in:
Johannes Zellner
2025-03-02 16:23:14 +01:00
parent e13db20c85
commit ab0d5c8967
6 changed files with 83 additions and 21 deletions
@@ -9,7 +9,7 @@ import PortBindings from './PortBindings.vue';
import DomainsModel from '../models/DomainsModel.js';
import AppsModel from '../models/AppsModel.js';
import DashboardModel from '../models/DashboardModel.js';
import { PROXY_APP_ID } from '../constants.js';
import { PROXY_APP_ID, ACL_OPTIONS } from '../constants.js';
const STEP = Object.freeze({
DETAILS: Symbol('details'),
@@ -51,11 +51,8 @@ function setStep(newStep) {
// form data
const location = ref('');
// accessRestriction:
// object = SSO with user groups
// true = SSO all
// false = NOSSO
const accessRestriction = ref(true);
const accessRestrictionOption = ref(ACL_OPTIONS.ANY);
const accessRestrictionAcl = ref({ users: [], groups: [] });
const domain = ref({});
const tcpPorts = ref({});
const udpPorts = ref({});
@@ -66,10 +63,10 @@ async function submit() {
const config = {
subdomain: location.value,
domain: domain.value.domain,
accessRestriction: typeof accessRestriction.value === 'object' ? accessRestriction.value : null,
accessRestriction: accessRestrictionOption.value === ACL_OPTIONS.ANY ? null : (accessRestrictionOption.value === ACL_OPTIONS.NOSSO ? false : accessRestrictionAcl.value)
};
if (manifest.value.optionalSso) config.sso = accessRestriction.value;
if (manifest.value.optionalSso) config.sso = accessRestrictionOption.value !== ACL_OPTIONS.NOSSO;
const finalPorts = {};
for (const p in tcpPorts.value) {
@@ -204,7 +201,7 @@ defineExpose({
</FormGroup>
<PortBindings v-model:tcp-ports="tcpPorts" v-model:udp-ports="udpPorts" :error="formError"/>
<AccessControl v-model="accessRestriction" :manifest="manifest"/>
<AccessControl v-model:option="accessRestrictionOption" v-model:acl="accessRestrictionAcl" :manifest="manifest"/>
<Button style="margin-top: 15px" @click="submit" icon="fa-solid fa-circle-down" :disabled="!formValid" :loading="busy">Install {{ manifest.title }}</Button>
</fieldset>