Move cloudron.io account to its own view only for owners

This commit is contained in:
Johannes Zellner
2025-05-23 17:43:21 +02:00
parent 85fc467845
commit ff2cb31f0f
3 changed files with 11 additions and 7 deletions
+10 -4
View File
@@ -13,9 +13,10 @@ import SubscriptionRequiredDialog from './components/SubscriptionRequiredDialog.
import OfflineOverlay from './components/OfflineOverlay.vue';
import AppsView from './views/AppsView.vue';
import AppConfigureView from './views/AppConfigureView.vue';
import AppearanceView from './views/AppearanceView.vue';
import AppstoreView from './views/AppstoreView.vue';
import BackupsView from './views/BackupsView.vue';
import AppearanceView from './views/AppearanceView.vue';
import CloudronAccountView from './views/CloudronAccountView.vue';
import DomainsView from './views/DomainsView.vue';
import EmailDomainView from './views/EmailDomainView.vue';
import EmailMailboxesView from './views/EmailMailboxesView.vue';
@@ -42,6 +43,7 @@ const VIEWS = {
APPS: 'apps',
APPSTORE: 'appstore',
BACKUPS: 'backups',
CLOUDRON_ACCOUNT: 'cloudron-account',
DOMAINS: 'domains',
EMAIL_DOMAIN: 'email-domain',
EMAIL_MAILBOXES: 'email-mailboxes',
@@ -135,10 +137,12 @@ function onHashChange() {
view.value = VIEWS.APPSTORE;
} else if (v.indexOf(VIEWS.APP+'/') === 0) { // this checks permissions within the view as we may have an app operator
view.value = VIEWS.APP;
} else if (v === VIEWS.BACKUPS && profile.value.isAtLeastAdmin) {
view.value = VIEWS.BACKUPS;
} else if (v === VIEWS.APPEARANCE && profile.value.isAtLeastAdmin) {
view.value = VIEWS.APPEARANCE;
} else if (v === VIEWS.BACKUPS && profile.value.isAtLeastAdmin) {
view.value = VIEWS.BACKUPS;
} else if (v === VIEWS.CLOUDRON_ACCOUNT && profile.value.isAtLeastOwner) {
view.value = VIEWS.CLOUDRON_ACCOUNT;
} else if (v === VIEWS.DOMAINS && profile.value.isAtLeastAdmin) {
view.value = VIEWS.DOMAINS;
} else if (v === VIEWS.EMAIL_DOMAIN && profile.value.isAtLeastMailManager) {
@@ -274,6 +278,7 @@ onMounted(async () => {
<a class="sidebar-item" :class="{ active: activeSidebarItem === 'network' }" v-show="profile.isAtLeastAdmin" href="#/network" @click="onSidebarClose()"><i class="fas fa-network-wired fa-fw"></i> {{ $t('network.title') }}</a>
<a class="sidebar-item" :class="{ active: activeSidebarItem === 'services' }" v-show="profile.isAtLeastAdmin" href="#/services" @click="onSidebarClose()"><i class="fa fa-cogs fa-fw"></i> {{ $t('services.title') }}</a>
<a class="sidebar-item" :class="{ active: activeSidebarItem === 'system' }" v-show="profile.isAtLeastAdmin" href="#/system" @click="onSidebarClose()"><i class="fa fa-wrench fa-fw"></i> {{ $t('settings.title') }}</a>
<a class="sidebar-item" :class="{ active: activeSidebarItem === 'cloudron-account' }" v-show="profile.isAtLeastOwner" href="#/cloudron-account" @click="onSidebarClose()"><i class="fa fa-crown fa-fw"></i> {{ $t('settings.appstoreAccount.title') }}</a>
<div class="sidebar-item" v-show="profile.isAtLeastAdmin" @click="onToggleGroup('user-directory')"><i class="fa fa-users-gear fa-fw"></i> {{ $t('users.title') }} <i class="collapse fa-solid fa-angle-right" :class="{ expanded: activeSidebarGroup === 'user-directory' }" style="margin-left: 6px;"></i></div>
<Transition name="sidebar-item-group-animation">
<div class="sidebar-item-group" v-if="activeSidebarGroup === 'user-directory'">
@@ -292,9 +297,10 @@ onMounted(async () => {
<div style="display: flex; justify-content: center; overflow: auto; flex-grow: 1; padding: 0 6px; position: relative;">
<AppsView v-if="view === VIEWS.APPS" />
<AppConfigureView v-else-if="view === VIEWS.APP" />
<AppearanceView v-else-if="view === VIEWS.APPEARANCE" />
<AppstoreView v-else-if="view === VIEWS.APPSTORE" />
<BackupsView v-else-if="view === VIEWS.BACKUPS" />
<AppearanceView v-else-if="view === VIEWS.APPEARANCE" />
<CloudronAccountView v-else-if="view === VIEWS.CLOUDRON_ACCOUNT" />
<DomainsView v-else-if="view === VIEWS.DOMAINS" />
<EmailDomainView v-else-if="view === VIEWS.EMAIL_DOMAIN" />
<EmailMailboxesView v-else-if="view === VIEWS.EMAIL_MAILBOXES" />