Fixup access control component to cover all cases

This commit is contained in:
Johannes Zellner
2025-11-11 19:40:07 +01:00
parent 4ea8ab08a3
commit 4226654772
3 changed files with 14 additions and 9 deletions
+12 -7
View File
@@ -1,6 +1,6 @@
<script setup>
import { onMounted } from 'vue';
import { computed } from 'vue';
import { FormGroup, Radiobutton, MultiSelect } from '@cloudron/pankow';
import { ACL_OPTIONS } from '../constants.js';
@@ -17,20 +17,25 @@ const props = defineProps({
type: Object,
required: true,
},
hideOptionalSsoOption: {
sso: {
type: Boolean,
default: false,
required: false,
}
},
installation: {
type: Boolean,
required: true,
},
});
const accessRestrictionOption = defineModel('option');
const accessRestriction = defineModel('acl');
const optionalSso = !!props.manifest.optionalSso;
const cloudronAuth = !!(props.manifest.addons['ldap'] || props.manifest.addons['oidc'] || props.manifest.addons['proxyAuth']) && !props.hideOptionalSsoOption;
onMounted(async () => {
const optionalSso = computed(() => {
return !!props.manifest.optionalSso && props.installation;
});
const cloudronAuth = computed(() => {
return !(!props.installation && !props.sso) && !!(props.manifest.addons['ldap'] || props.manifest.addons['oidc'] || props.manifest.addons['proxyAuth']);
});
</script>
@@ -312,7 +312,7 @@ defineExpose({
</FormGroup>
<PortBindings v-model:tcp="tcpPorts" v-model:udp="udpPorts" :error="formError" :domain-provider="domainProvider"/>
<AccessControl v-model:option="accessRestrictionOption" v-model:acl="accessRestrictionAcl" :manifest="manifest" :users="users" :groups="groups"/>
<AccessControl v-model:option="accessRestrictionOption" v-model:acl="accessRestrictionAcl" :manifest="manifest" :users="users" :groups="groups" :installation="true"/>
<div class="bottom-button-bar">
<Button v-if="needsOverwriteDns" danger @click="onSubmit(true)" icon="fa-solid fa-circle-down" :disabled="!formValid" :loading="busy">Install {{ manifest.title }} and overwrite DNS</Button>
+1 -1
View File
@@ -92,7 +92,7 @@ onMounted(async () => {
<template>
<div v-if="!loading">
<div class="text-danger" v-if="errorMessage">{{ errorMessage }}</div>
<AccessControl v-model:option="accessRestrictionOption" v-model:acl="accessRestrictionAcl" :users="users" :groups="groups" :manifest="app.manifest" :hide-optional-sso-option="!app.sso"/>
<AccessControl v-model:option="accessRestrictionOption" v-model:acl="accessRestrictionAcl" :users="users" :groups="groups" :manifest="app.manifest" :sso="app.sso" :installation="false"/>
<br/>
<OperatorAccessControl v-model:acl="operatorAcl" :users="users" :groups="groups" :has-ftp="app.manifest.addons?.localstorage?.ftp"/>
<br/>