diff --git a/dashboard/src/components/OperatorAccessControl.vue b/dashboard/src/components/OperatorAccessControl.vue new file mode 100644 index 000000000..52527b4d1 --- /dev/null +++ b/dashboard/src/components/OperatorAccessControl.vue @@ -0,0 +1,49 @@ + + + diff --git a/dashboard/src/components/app/Access.vue b/dashboard/src/components/app/Access.vue index 8f8a155b9..4ff1b0c78 100644 --- a/dashboard/src/components/app/Access.vue +++ b/dashboard/src/components/app/Access.vue @@ -3,6 +3,7 @@ import { ref, onMounted } from 'vue'; import { Button } from '@cloudron/pankow'; import AccessControl from '../AccessControl.vue'; +import OperatorAccessControl from '../OperatorAccessControl.vue'; import AppsModel from '../../models/AppsModel.js'; import { ACL_OPTIONS } from '../../constants.js'; @@ -14,16 +15,20 @@ const busy = ref(false); const errorMessage = ref(''); const accessRestrictionOption = ref(ACL_OPTIONS.ANY); const accessRestrictionAcl = ref({ users: [], groups: [] }); +const operatorAcl = ref({ users: [], groups: [] }); async function onSubmit() { busy.value = true; errorMessage.value = ''; - const data = { - accessRestriction: accessRestrictionOption.value === ACL_OPTIONS.ANY ? null : (accessRestrictionOption.value === ACL_OPTIONS.NOSSO ? false : accessRestrictionAcl.value) - }; + let [error] = await appsModel.configure(props.app.id, 'access_restriction', { accessRestriction: accessRestrictionOption.value === ACL_OPTIONS.ANY ? null : (accessRestrictionOption.value === ACL_OPTIONS.NOSSO ? false : accessRestrictionAcl.value) }); + if (error) { + errorMessage.value = error.body ? error.body.message : 'Internal error'; + busy.value = false; + return console.error(error); + } - const [error] = await appsModel.configure(props.app.id, 'access_restriction', data); + [error] = await appsModel.configure(props.app.id, 'operators', { operators: (operatorAcl.value.users.length || operatorAcl.value.groups.length) ? operatorAcl.value : null}); if (error) { errorMessage.value = error.body ? error.body.message : 'Internal error'; busy.value = false; @@ -44,6 +49,14 @@ onMounted(() => { accessRestrictionOption.value = ACL_OPTIONS.RESTRICTED; accessRestrictionAcl.value = props.app.accessRestriction; } + + operatorAcl.value = { users: [], groups: [] }; + if (props.app.operators) { + operatorAcl.value.users = props.app.operators.users; + operatorAcl.value.groups = props.app.operators.groups; + } + + console.log(props.app) }); @@ -53,6 +66,9 @@ onMounted(() => {
{{ errorMessage }}

+ +
+