From 35fd8a8e82559eb3f2a4ac169bd0b5f923160adb Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Fri, 16 May 2025 10:27:38 +0200 Subject: [PATCH 1/4] enhance: unified ui --- src/templates/Main.vue | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/templates/Main.vue b/src/templates/Main.vue index 7176f8e..5a534da 100644 --- a/src/templates/Main.vue +++ b/src/templates/Main.vue @@ -17,9 +17,12 @@ class="max-w-full w-full grow flex flex-col divide-y-2 divide-gray-300 bg-white rounded-lg justify-center overflow-hidden" > +
+

{{ title }}

+
-
+
@@ -51,6 +54,10 @@ export default defineComponent({ type: Boolean, default: true, }, + title: { + type: String, + default: "Titel", + }, }, computed: { ...mapState(useNavigationStore, ["activeLink", "activeNavigation"]), @@ -60,6 +67,9 @@ export default defineComponent({ rootRoute() { return ((this.$route?.name as string) ?? "").split("-")[0]; }, + topBar() { + return this.$slots.topBar; + }, diffMain() { return this.$slots.diffMain; }, From 4ee16c624abb6f5dd720441a847232a2fea84563 Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Fri, 16 May 2025 11:12:18 +0200 Subject: [PATCH 2/4] enhance: permission handling --- src/stores/ability.ts | 23 +++++++++++++++++++---- src/stores/admin/navigation.ts | 6 +++--- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/stores/ability.ts b/src/stores/ability.ts index f65f6fe..ed65b5f 100644 --- a/src/stores/ability.ts +++ b/src/stores/ability.ts @@ -33,13 +33,21 @@ export const useAbilityStore = defineStore("ability", { if (type == "admin") return permissions?.admin ?? permissions?.adminByOwner ?? false; if (permissions?.admin || permissions?.adminByOwner) return true; if ( - permissions[section]?.all == "*" || - permissions[section]?.all?.includes(type) || + (permissions[section]?.all == "*" || permissions[section]?.all?.includes(type)) && permissions[section] != undefined ) return true; return false; }, + canAccessSection: + (state) => + (section: PermissionSection): boolean => { + const permissions = state.permissions; + if (state.isOwner) return true; + if (permissions?.admin || permissions?.adminByOwner) return true; + if (permissions[section] != undefined) return true; + return false; + }, isAdmin: (state) => (): boolean => { const permissions = state.permissions; if (state.isOwner) return true; @@ -72,13 +80,20 @@ export const useAbilityStore = defineStore("ability", { if (type == "admin") return permissions?.admin ?? permissions?.adminByOwner ?? false; if (permissions?.admin || permissions?.adminByOwner) return true; if ( - permissions[section]?.all == "*" || - permissions[section]?.all?.includes(type) || + (permissions[section]?.all == "*" || permissions[section]?.all?.includes(type)) && permissions[section] != undefined ) return true; return false; }, + _canAccessSection: + () => + (permissions: PermissionObject, section: PermissionSection): boolean => { + // ignores ownership + if (permissions?.admin || permissions?.adminByOwner) return true; + if (permissions[section] != undefined) return true; + return false; + }, }, actions: { setAbility(permissions: PermissionObject, isOwner: boolean) { diff --git a/src/stores/admin/navigation.ts b/src/stores/admin/navigation.ts index 8d43417..7f0d0c9 100644 --- a/src/stores/admin/navigation.ts +++ b/src/stores/admin/navigation.ts @@ -48,7 +48,7 @@ export const useNavigationStore = defineStore("navigation", { updateTopLevel() { const abilityStore = useAbilityStore(); this.topLevel = [ - ...(abilityStore.canSection("read", "club") + ...(abilityStore.canAccessSection("club") ? [ { key: "club", @@ -57,7 +57,7 @@ export const useNavigationStore = defineStore("navigation", { } as topLevelNavigationModel, ] : []), - ...(abilityStore.canSection("read", "configuration") + ...(abilityStore.canAccessSection("configuration") ? [ { key: "configuration", @@ -66,7 +66,7 @@ export const useNavigationStore = defineStore("navigation", { } as topLevelNavigationModel, ] : []), - ...(abilityStore.canSection("read", "management") + ...(abilityStore.canAccessSection("management") ? [ { key: "management", From 04c01b67801021f7ec12f8b0d4529ce6318fecb1 Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Fri, 16 May 2025 13:32:40 +0200 Subject: [PATCH 3/4] change: standardisation of UI --- src/templates/Main.vue | 8 +- src/views/account/Administration.vue | 7 +- src/views/account/LoginData.vue | 7 +- src/views/account/Me.vue | 7 +- src/views/account/Permission.vue | 11 +- src/views/admin/club/calendar/Calendar.vue | 14 +- src/views/admin/club/listprint/ListPrint.vue | 133 +++++++++--------- src/views/admin/club/members/Member.vue | 7 +- .../admin/club/members/MemberRouting.vue | 11 +- src/views/admin/club/members/Overview.vue | 24 ---- .../admin/club/newsletter/Newsletter.vue | 7 +- .../club/newsletter/NewsletterRouting.vue | 21 ++- src/views/admin/club/protocol/Protocol.vue | 7 +- .../admin/club/protocol/ProtocolRouting.vue | 33 ++--- src/views/admin/club/query/Builder.vue | 93 ++++++------ src/views/admin/configuration/award/Award.vue | 7 +- .../admin/configuration/award/AwardEdit.vue | 7 +- .../calendarType/CalendarType.vue | 7 +- .../calendarType/CalendarTypeEdit.vue | 7 +- .../communicationType/CommunicationType.vue | 7 +- .../CommunicationTypeEdit.vue | 7 +- .../executivePosition/ExecutivePosition.vue | 7 +- .../ExecutivePositionEdit.vue | 7 +- .../membershipStatus/MembershipStatus.vue | 7 +- .../membershipStatus/MembershipStatusEdit.vue | 7 +- .../newsletterConfig/NewsletterConfig.vue | 7 +- .../qualification/Qualification.vue | 7 +- .../qualification/QualificationEdit.vue | 7 +- .../configuration/queryStore/QueryStore.vue | 7 +- .../configuration/salutation/Salutation.vue | 7 +- .../salutation/SalutationEdit.vue | 7 +- .../admin/configuration/template/Template.vue | 11 +- .../configuration/template/TemplateEdit.vue | 7 +- .../configuration/template/UsageInfo.vue | 7 +- .../templateUsage/TemplateUsage.vue | 7 +- .../admin/management/backup/BackupRouting.vue | 7 +- .../management/backup/GeneratedBackup.vue | 4 +- .../management/backup/UploadedBackup.vue | 4 +- src/views/admin/management/role/Role.vue | 7 +- src/views/admin/management/role/RoleEdit.vue | 7 +- .../management/role/RoleEditPermission.vue | 7 +- .../admin/management/setting/Setting.vue | 7 +- src/views/admin/management/user/Invite.vue | 13 +- src/views/admin/management/user/User.vue | 7 +- src/views/admin/management/user/UserEdit.vue | 7 +- .../management/user/UserEditPermission.vue | 7 +- .../admin/management/user/UserEditRoles.vue | 7 +- .../management/version/VersionDisplay.vue | 7 +- src/views/admin/management/webapi/Webapi.vue | 7 +- .../admin/management/webapi/WebapiEdit.vue | 7 +- .../webapi/WebapiEditPermission.vue | 7 +- src/views/docs/DocPage.vue | 2 +- src/views/public/calendar/Calendar.vue | 6 +- src/views/public/calendar/CalendarExplain.vue | 7 +- 54 files changed, 199 insertions(+), 462 deletions(-) delete mode 100644 src/views/admin/club/members/Overview.vue diff --git a/src/templates/Main.vue b/src/templates/Main.vue index 5a534da..ee95a6c 100644 --- a/src/templates/Main.vue +++ b/src/templates/Main.vue @@ -16,9 +16,9 @@
- -
-

{{ title }}

+
+

{{ title }}

+
@@ -56,7 +56,7 @@ export default defineComponent({ }, title: { type: String, - default: "Titel", + default: "", }, }, computed: { diff --git a/src/views/account/Administration.vue b/src/views/account/Administration.vue index d2d0a3b..f95b89a 100644 --- a/src/views/account/Administration.vue +++ b/src/views/account/Administration.vue @@ -1,10 +1,5 @@