import("@/views/RouterView.vue"),
- meta: { type: "read", section: "settings" },
+ meta: { type: "read", section: "configuration" },
beforeEnter: [abilityAndNavUpdate],
children: [
{
path: "",
name: "admin-settings-default",
component: () => import("@/views/admin/ViewSelect.vue"),
- meta: { type: "read", section: "settings" },
+ meta: { type: "read", section: "configuration" },
beforeEnter: [abilityAndNavUpdate],
},
{
path: "qualification",
name: "admin-settings-qualification-route",
component: () => import("@/views/RouterView.vue"),
- meta: { type: "read", section: "settings", module: "qualification" },
+ meta: { type: "read", section: "configuration", module: "qualification" },
beforeEnter: [abilityAndNavUpdate],
children: [
{
@@ -327,7 +327,7 @@ const router = createRouter({
path: ":id/edit",
name: "admin-settings-qualification-edit",
component: () => import("@/views/admin/configuration/qualification/QualificationEdit.vue"),
- meta: { type: "update", section: "settings", module: "qualification" },
+ meta: { type: "update", section: "configuration", module: "qualification" },
beforeEnter: [abilityAndNavUpdate],
props: true,
},
@@ -337,7 +337,7 @@ const router = createRouter({
path: "award",
name: "admin-settings-award-route",
component: () => import("@/views/RouterView.vue"),
- meta: { type: "read", section: "settings", module: "award" },
+ meta: { type: "read", section: "configuration", module: "award" },
beforeEnter: [abilityAndNavUpdate],
children: [
{
@@ -349,7 +349,7 @@ const router = createRouter({
path: ":id/edit",
name: "admin-settings-award-edit",
component: () => import("@/views/admin/configuration/award/AwardEdit.vue"),
- meta: { type: "update", section: "settings", module: "award" },
+ meta: { type: "update", section: "configuration", module: "award" },
beforeEnter: [abilityAndNavUpdate],
props: true,
},
@@ -359,21 +359,21 @@ const router = createRouter({
path: "executive-position",
name: "admin-settings-executive_position-route",
component: () => import("@/views/RouterView.vue"),
- meta: { type: "read", section: "settings", module: "executive_position" },
+ meta: { type: "read", section: "configuration", module: "executive_position" },
beforeEnter: [abilityAndNavUpdate],
children: [
{
path: "",
name: "admin-settings-executive_position",
component: () => import("@/views/admin/configuration/executivePosition/ExecutivePosition.vue"),
- meta: { type: "read", section: "settings", module: "executive_position" },
+ meta: { type: "read", section: "configuration", module: "executive_position" },
beforeEnter: [abilityAndNavUpdate],
},
{
path: ":id/edit",
name: "admin-settings-executive_position-edit",
component: () => import("@/views/admin/configuration/executivePosition/ExecutivePositionEdit.vue"),
- meta: { type: "update", section: "settings", module: "executive_position" },
+ meta: { type: "update", section: "configuration", module: "executive_position" },
beforeEnter: [abilityAndNavUpdate],
props: true,
},
@@ -383,7 +383,7 @@ const router = createRouter({
path: "communication-type",
name: "admin-settings-communication_type-route",
component: () => import("@/views/RouterView.vue"),
- meta: { type: "read", section: "settings", module: "communication_type" },
+ meta: { type: "read", section: "configuration", module: "communication_type" },
beforeEnter: [abilityAndNavUpdate],
children: [
{
@@ -395,7 +395,7 @@ const router = createRouter({
path: ":id/edit",
name: "admin-settings-communication_type-edit",
component: () => import("@/views/admin/configuration/communicationType/CommunicationTypeEdit.vue"),
- meta: { type: "update", section: "settings", module: "communication_type" },
+ meta: { type: "update", section: "configuration", module: "communication_type" },
beforeEnter: [abilityAndNavUpdate],
props: true,
},
@@ -405,7 +405,7 @@ const router = createRouter({
path: "status",
name: "admin-settings-membership_status-route",
component: () => import("@/views/RouterView.vue"),
- meta: { type: "read", section: "settings", module: "membership_status" },
+ meta: { type: "read", section: "configuration", module: "membership_status" },
beforeEnter: [abilityAndNavUpdate],
children: [
{
@@ -417,7 +417,7 @@ const router = createRouter({
path: ":id/edit",
name: "admin-settings-membership_status-edit",
component: () => import("@/views/admin/configuration/membershipStatus/MembershipStatusEdit.vue"),
- meta: { type: "update", section: "settings", module: "membership_status" },
+ meta: { type: "update", section: "configuration", module: "membership_status" },
beforeEnter: [abilityAndNavUpdate],
props: true,
},
@@ -427,7 +427,7 @@ const router = createRouter({
path: "salutation",
name: "admin-settings-salutation-route",
component: () => import("@/views/RouterView.vue"),
- meta: { type: "read", section: "settings", module: "salutation" },
+ meta: { type: "read", section: "configuration", module: "salutation" },
beforeEnter: [abilityAndNavUpdate],
children: [
{
@@ -439,7 +439,7 @@ const router = createRouter({
path: ":id/edit",
name: "admin-settings-salutation-edit",
component: () => import("@/views/admin/configuration/salutation/SalutationEdit.vue"),
- meta: { type: "update", section: "settings", module: "salutation" },
+ meta: { type: "update", section: "configuration", module: "salutation" },
beforeEnter: [abilityAndNavUpdate],
props: true,
},
@@ -449,7 +449,7 @@ const router = createRouter({
path: "calendar-type",
name: "admin-settings-calendar_type-route",
component: () => import("@/views/RouterView.vue"),
- meta: { type: "read", section: "settings", module: "calendar_type" },
+ meta: { type: "read", section: "configuration", module: "calendar_type" },
beforeEnter: [abilityAndNavUpdate],
children: [
{
@@ -461,7 +461,7 @@ const router = createRouter({
path: ":id/edit",
name: "admin-settings-calendar_type-edit",
component: () => import("@/views/admin/configuration/calendarType/CalendarTypeEdit.vue"),
- meta: { type: "update", section: "settings", module: "calendar_type" },
+ meta: { type: "update", section: "configuration", module: "calendar_type" },
beforeEnter: [abilityAndNavUpdate],
props: true,
},
@@ -471,14 +471,14 @@ const router = createRouter({
path: "query-store",
name: "admin-settings-query_store",
component: () => import("@/views/admin/configuration/queryStore/QueryStore.vue"),
- meta: { type: "read", section: "settings", module: "query_store" },
+ meta: { type: "read", section: "configuration", module: "query_store" },
beforeEnter: [abilityAndNavUpdate],
},
{
path: "template",
name: "admin-settings-template-route",
component: () => import("@/views/RouterView.vue"),
- meta: { type: "read", section: "settings", module: "template" },
+ meta: { type: "read", section: "configuration", module: "template" },
beforeEnter: [abilityAndNavUpdate],
children: [
{
@@ -496,7 +496,7 @@ const router = createRouter({
path: ":id/edit",
name: "admin-settings-template-edit",
component: () => import("@/views/admin/configuration/template/TemplateEdit.vue"),
- meta: { type: "update", section: "settings", module: "template" },
+ meta: { type: "update", section: "configuration", module: "template" },
beforeEnter: [abilityAndNavUpdate],
props: true,
},
@@ -506,14 +506,14 @@ const router = createRouter({
path: "template-usage",
name: "admin-settings-template_usage",
component: () => import("@/views/admin/configuration/templateUsage/TemplateUsage.vue"),
- meta: { type: "read", section: "settings", module: "template_usage" },
+ meta: { type: "read", section: "configuration", module: "template_usage" },
beforeEnter: [abilityAndNavUpdate],
},
{
path: "newsletter-config",
name: "admin-settings-newsletter_config",
component: () => import("@/views/admin/configuration/newsletterConfig/NewsletterConfig.vue"),
- meta: { type: "read", section: "settings", module: "newsletter_config" },
+ meta: { type: "read", section: "configuration", module: "newsletter_config" },
beforeEnter: [abilityAndNavUpdate],
},
],
@@ -522,21 +522,21 @@ const router = createRouter({
path: "user",
name: "admin-user",
component: () => import("@/views/RouterView.vue"),
- meta: { type: "read", section: "user" },
+ meta: { type: "read", section: "management" },
beforeEnter: [abilityAndNavUpdate],
children: [
{
path: "",
name: "admin-user-default",
component: () => import("@/views/admin/ViewSelect.vue"),
- meta: { type: "read", section: "user" },
+ meta: { type: "read", section: "management" },
beforeEnter: [abilityAndNavUpdate],
},
{
path: "user",
name: "admin-user-user-route",
component: () => import("@/views/RouterView.vue"),
- meta: { type: "read", section: "user", module: "user" },
+ meta: { type: "read", section: "management", module: "user" },
beforeEnter: [abilityAndNavUpdate],
children: [
{
@@ -553,7 +553,7 @@ const router = createRouter({
path: ":id/edit",
name: "admin-user-user-edit",
component: () => import("@/views/admin/management/user/UserEdit.vue"),
- meta: { type: "update", section: "user", module: "user" },
+ meta: { type: "update", section: "management", module: "user" },
beforeEnter: [abilityAndNavUpdate],
props: true,
},
@@ -561,7 +561,7 @@ const router = createRouter({
path: ":id/permission",
name: "admin-user-user-permission",
component: () => import("@/views/admin/management/user/UserEditPermission.vue"),
- meta: { type: "update", section: "user", module: "user" },
+ meta: { type: "update", section: "management", module: "user" },
beforeEnter: [abilityAndNavUpdate],
props: true,
},
@@ -569,7 +569,7 @@ const router = createRouter({
path: ":id/roles",
name: "admin-user-user-roles",
component: () => import("@/views/admin/management/user/UserEditRoles.vue"),
- meta: { type: "update", section: "user", module: "user" },
+ meta: { type: "update", section: "management", module: "user" },
beforeEnter: [abilityAndNavUpdate],
props: true,
},
@@ -579,7 +579,7 @@ const router = createRouter({
path: "role",
name: "admin-user-role-route",
component: () => import("@/views/RouterView.vue"),
- meta: { type: "read", section: "user", module: "role" },
+ meta: { type: "read", section: "management", module: "role" },
beforeEnter: [abilityAndNavUpdate],
children: [
{
@@ -591,7 +591,7 @@ const router = createRouter({
path: ":id/edit",
name: "admin-user-role-edit",
component: () => import("@/views/admin/management/role/RoleEdit.vue"),
- meta: { type: "update", section: "user", module: "role" },
+ meta: { type: "update", section: "management", module: "role" },
beforeEnter: [abilityAndNavUpdate],
props: true,
},
@@ -599,7 +599,7 @@ const router = createRouter({
path: ":id/permission",
name: "admin-user-role-permission",
component: () => import("@/views/admin/management/role/RoleEditPermission.vue"),
- meta: { type: "update", section: "user", module: "role" },
+ meta: { type: "update", section: "management", module: "role" },
beforeEnter: [abilityAndNavUpdate],
props: true,
},
@@ -609,7 +609,7 @@ const router = createRouter({
path: "webapi",
name: "admin-user-webapi-route",
component: () => import("@/views/RouterView.vue"),
- meta: { type: "read", section: "user", module: "webapi" },
+ meta: { type: "read", section: "management", module: "webapi" },
beforeEnter: [abilityAndNavUpdate],
children: [
{
@@ -621,7 +621,7 @@ const router = createRouter({
path: ":id/edit",
name: "admin-user-webapi-edit",
component: () => import("@/views/admin/management/webapi/WebapiEdit.vue"),
- meta: { type: "update", section: "user", module: "webapi" },
+ meta: { type: "update", section: "management", module: "webapi" },
beforeEnter: [abilityAndNavUpdate],
props: true,
},
@@ -629,7 +629,7 @@ const router = createRouter({
path: ":id/permission",
name: "admin-user-webapi-permission",
component: () => import("@/views/admin/management/webapi/WebapiEditPermission.vue"),
- meta: { type: "update", section: "user", module: "webapi" },
+ meta: { type: "update", section: "management", module: "webapi" },
beforeEnter: [abilityAndNavUpdate],
props: true,
},
@@ -639,7 +639,7 @@ const router = createRouter({
path: "backup",
name: "admin-user-backup-route",
component: () => import("@/views/admin/management/backup/BackupRouting.vue"),
- meta: { type: "read", section: "user", module: "backup" },
+ meta: { type: "read", section: "management", module: "backup" },
beforeEnter: [abilityAndNavUpdate],
children: [
{
@@ -778,6 +778,7 @@ export default router;
declare module "vue-router" {
interface RouteMeta {
+ admin?: boolean;
type?: PermissionType | "admin";
section?: PermissionSection;
module?: PermissionModule;
diff --git a/src/stores/admin/configuration/queryStore.ts b/src/stores/admin/configuration/queryStore.ts
index 00ef192..772117e 100644
--- a/src/stores/admin/configuration/queryStore.ts
+++ b/src/stores/admin/configuration/queryStore.ts
@@ -38,7 +38,7 @@ export const useQueryStoreStore = defineStore("queryStore", {
const queryBuilderStore = useQueryBuilderStore();
const modalStore = useModalStore();
const abilityStore = useAbilityStore();
- if (queryBuilderStore.activeQueryId != undefined && abilityStore.can("update", "settings", "query_store")) {
+ if (queryBuilderStore.activeQueryId != undefined && abilityStore.can("update", "configuration", "query_store")) {
modalStore.openModal(
markRaw(
defineAsyncComponent(() => import("@/components/admin/configuration/queryStore/UpdateQueryStoreModal.vue"))
diff --git a/src/stores/admin/navigation.ts b/src/stores/admin/navigation.ts
index 33297b6..99a153e 100644
--- a/src/stores/admin/navigation.ts
+++ b/src/stores/admin/navigation.ts
@@ -58,7 +58,7 @@ export const useNavigationStore = defineStore("navigation", {
} as topLevelNavigationModel,
]
: []),
- ...(abilityStore.canSection("read", "settings")
+ ...(abilityStore.canSection("read", "configuration")
? [
{
key: "settings",
@@ -67,7 +67,7 @@ export const useNavigationStore = defineStore("navigation", {
} as topLevelNavigationModel,
]
: []),
- ...(abilityStore.canSection("read", "user")
+ ...(abilityStore.canSection("read", "management")
? [
{
key: "user",
@@ -99,41 +99,45 @@ export const useNavigationStore = defineStore("navigation", {
mainTitle: "Einstellungen",
main: [
{ key: "divider1", title: "Mitgliederdaten" },
- ...(abilityStore.can("read", "settings", "salutation") ? [{ key: "salutation", title: "Anrede" }] : []),
- ...(abilityStore.can("read", "settings", "award") ? [{ key: "award", title: "Auszeichnungen" }] : []),
- ...(abilityStore.can("read", "settings", "communication_type")
+ ...(abilityStore.can("read", "configuration", "salutation")
+ ? [{ key: "salutation", title: "Anrede" }]
+ : []),
+ ...(abilityStore.can("read", "configuration", "award") ? [{ key: "award", title: "Auszeichnungen" }] : []),
+ ...(abilityStore.can("read", "configuration", "communication_type")
? [{ key: "communication_type", title: "Kommunikationsarten" }]
: []),
- ...(abilityStore.can("read", "settings", "membership_status")
+ ...(abilityStore.can("read", "configuration", "membership_status")
? [{ key: "membership_status", title: "Mitgliedsstatus" }]
: []),
- ...(abilityStore.can("read", "settings", "qualification")
+ ...(abilityStore.can("read", "configuration", "qualification")
? [{ key: "qualification", title: "Qualifikationen" }]
: []),
- ...(abilityStore.can("read", "settings", "executive_position")
+ ...(abilityStore.can("read", "configuration", "executive_position")
? [{ key: "executive_position", title: "Vereinsämter" }]
: []),
{ key: "divider2", title: "Einstellungen" },
- ...(abilityStore.can("read", "settings", "newsletter_config")
+ ...(abilityStore.can("read", "configuration", "newsletter_config")
? [{ key: "newsletter_config", title: "Newsletter Konfiguration" }]
: []),
- ...(abilityStore.can("read", "settings", "template") ? [{ key: "template", title: "Templates" }] : []),
- ...(abilityStore.can("read", "settings", "template_usage")
+ ...(abilityStore.can("read", "configuration", "template") ? [{ key: "template", title: "Templates" }] : []),
+ ...(abilityStore.can("read", "configuration", "template_usage")
? [{ key: "template_usage", title: "Template-Verwendung" }]
: []),
- ...(abilityStore.can("read", "settings", "calendar_type")
+ ...(abilityStore.can("read", "configuration", "calendar_type")
? [{ key: "calendar_type", title: "Terminarten" }]
: []),
- ...(abilityStore.can("read", "settings", "query") ? [{ key: "query_store", title: "Query Store" }] : []),
+ ...(abilityStore.can("read", "configuration", "query")
+ ? [{ key: "query_store", title: "Query Store" }]
+ : []),
],
},
user: {
mainTitle: "Benutzer",
main: [
- ...(abilityStore.can("read", "user", "user") ? [{ key: "user", title: "Benutzer" }] : []),
- ...(abilityStore.can("read", "user", "role") ? [{ key: "role", title: "Rollen" }] : []),
- ...(abilityStore.can("read", "user", "webapi") ? [{ key: "webapi", title: "Webapi-Token" }] : []),
- ...(abilityStore.can("read", "user", "backup") ? [{ key: "backup", title: "Backups" }] : []),
+ ...(abilityStore.can("read", "management", "user") ? [{ key: "user", title: "Benutzer" }] : []),
+ ...(abilityStore.can("read", "management", "role") ? [{ key: "role", title: "Rollen" }] : []),
+ ...(abilityStore.can("read", "management", "webapi") ? [{ key: "webapi", title: "Webapi-Token" }] : []),
+ ...(abilityStore.can("read", "management", "backup") ? [{ key: "backup", title: "Backups" }] : []),
...(abilityStore.isAdmin() ? [{ key: "version", title: "Version" }] : []),
],
},
diff --git a/src/types/permissionTypes.ts b/src/types/permissionTypes.ts
index e3d3105..a031c0e 100644
--- a/src/types/permissionTypes.ts
+++ b/src/types/permissionTypes.ts
@@ -1,4 +1,4 @@
-export type PermissionSection = "club" | "settings" | "user";
+export type PermissionSection = "club" | "configuration" | "management";
export type PermissionModule =
| "member"
@@ -43,7 +43,7 @@ export type SectionsAndModulesObject = {
[section in PermissionSection]: Array
;
};
-export const permissionSections: Array = ["club", "settings", "user"];
+export const permissionSections: Array = ["club", "configuration", "management"];
export const permissionModules: Array = [
"member",
"calendar",
@@ -69,7 +69,7 @@ export const permissionModules: Array = [
export const permissionTypes: Array = ["read", "create", "update", "delete"];
export const sectionsAndModules: SectionsAndModulesObject = {
club: ["member", "calendar", "newsletter", "protocol", "query"],
- settings: [
+ configuration: [
"qualification",
"award",
"executive_position",
@@ -82,5 +82,5 @@ export const sectionsAndModules: SectionsAndModulesObject = {
"template_usage",
"newsletter_config",
],
- user: ["user", "role", "webapi", "backup"],
+ management: ["user", "role", "webapi", "backup"],
};
diff --git a/src/views/admin/club/protocol/ProtocolPresence.vue b/src/views/admin/club/protocol/ProtocolPresence.vue
index 2dc1577..4792116 100644
--- a/src/views/admin/club/protocol/ProtocolPresence.vue
+++ b/src/views/admin/club/protocol/ProtocolPresence.vue
@@ -83,7 +83,7 @@ export default defineComponent({
};
},
sortedPresence() {
- return this.presence.toSorted((a, b) => {
+ return this.presence.slice().sort((a, b) => {
const memberA = this.getMember(a.memberId);
const memberB = this.getMember(b.memberId);
return `${memberA?.lastname}, ${memberA?.firstname}`.localeCompare(
diff --git a/src/views/admin/configuration/award/Award.vue b/src/views/admin/configuration/award/Award.vue
index 563b59c..cc96882 100644
--- a/src/views/admin/configuration/award/Award.vue
+++ b/src/views/admin/configuration/award/Award.vue
@@ -11,7 +11,7 @@
diff --git a/src/views/admin/configuration/calendarType/CalendarType.vue b/src/views/admin/configuration/calendarType/CalendarType.vue
index 3a25c07..1296798 100644
--- a/src/views/admin/configuration/calendarType/CalendarType.vue
+++ b/src/views/admin/configuration/calendarType/CalendarType.vue
@@ -15,7 +15,12 @@
/>