diff --git a/dashboard/src/components/AccessControl.vue b/dashboard/src/components/AccessControl.vue index 6e1e472ec..3f95e4c83 100644 --- a/dashboard/src/components/AccessControl.vue +++ b/dashboard/src/components/AccessControl.vue @@ -4,12 +4,7 @@ import { ref, onMounted } from 'vue'; import { FormGroup, Radiobutton, MultiSelect } from 'pankow'; import UsersModel from '../models/UsersModel.js'; import GroupsModel from '../models/GroupsModel.js'; - -const OPTIONS = Object.freeze({ - ANY: 'any', - RESTRICTED: 'restricted', - NOSSO: 'nosso', -}); +import { ACL_OPTIONS } from '../constants.js'; const usersModel = UsersModel.create(); const groupsModel = GroupsModel.create(); @@ -53,12 +48,12 @@ onMounted(async () => {

{{ $t('app.accessControl.userManagement.description') }}

{{ $t('appstore.installDialog.userManagementNone') }}

- - - + + + -
+
{{ $t('appstore.installDialog.users') }}: diff --git a/dashboard/src/components/AppInstallDialog.vue b/dashboard/src/components/AppInstallDialog.vue index ef0d4f166..8cc5db203 100644 --- a/dashboard/src/components/AppInstallDialog.vue +++ b/dashboard/src/components/AppInstallDialog.vue @@ -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({ - + diff --git a/dashboard/src/components/ApplinkDialog.vue b/dashboard/src/components/ApplinkDialog.vue index c4bcd39c9..eafd9d607 100644 --- a/dashboard/src/components/ApplinkDialog.vue +++ b/dashboard/src/components/ApplinkDialog.vue @@ -61,7 +61,7 @@ export default { } else if (this.iconUrl) { // current icon return API_ORIGIN + this.iconUrl; } else { - return API_ORIGIN + 'img/appicon_fallback.png'; + return API_ORIGIN + '/img/appicon_fallback.png'; } } }, diff --git a/dashboard/src/components/app/Access.vue b/dashboard/src/components/app/Access.vue new file mode 100644 index 000000000..5059a2c92 --- /dev/null +++ b/dashboard/src/components/app/Access.vue @@ -0,0 +1,58 @@ + + + diff --git a/dashboard/src/constants.js b/dashboard/src/constants.js index 48ebfff11..ed6533dbb 100644 --- a/dashboard/src/constants.js +++ b/dashboard/src/constants.js @@ -1,4 +1,14 @@ +// app.accessRestriction: +// null = ANY +// false = NOSSO +// { users: [], groups: [] } = RESTRICTED +const ACL_OPTIONS = Object.freeze({ + ANY: 'any', + RESTRICTED: 'restricted', + NOSSO: 'nosso', +}); + // keep in sync with box/src/apps.js const ISTATES = { PENDING_INSTALL: 'pending_install', @@ -297,6 +307,7 @@ const BACKUP_FORMATS = [ // named exports export { + ACL_OPTIONS, APP_TYPES, ERROR, HSTATES, @@ -326,6 +337,7 @@ export { // default export export default { + ACL_OPTIONS, APP_TYPES, ERROR, HSTATES, diff --git a/dashboard/src/views/AppsView.vue b/dashboard/src/views/AppsView.vue index 3185286d0..758f33e59 100644 --- a/dashboard/src/views/AppsView.vue +++ b/dashboard/src/views/AppsView.vue @@ -1,6 +1,6 @@