Add table view and split name into firstName/lastName fields
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"date": "2025-10-21T12:32:03.239Z",
|
||||
"date": "2025-10-21T12:35:57.372Z",
|
||||
"preset": "node-server",
|
||||
"framework": {
|
||||
"name": "nuxt",
|
||||
|
||||
File diff suppressed because one or more lines are too long
16
.output/public/_nuxt/DLp4u09V.js
Normal file
16
.output/public/_nuxt/DLp4u09V.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
11
.output/public/_nuxt/SRZHqrjk.js
Normal file
11
.output/public/_nuxt/SRZHqrjk.js
Normal file
@@ -0,0 +1,11 @@
|
||||
import{e as a}from"#entry";/**
|
||||
* @license lucide-vue-next v0.344.0 - ISC
|
||||
*
|
||||
* This source code is licensed under the ISC license.
|
||||
* See the LICENSE file in the root directory of this source tree.
|
||||
*/const o=a("MailIcon",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}]]);/**
|
||||
* @license lucide-vue-next v0.344.0 - ISC
|
||||
*
|
||||
* This source code is licensed under the ISC license.
|
||||
* See the LICENSE file in the root directory of this source tree.
|
||||
*/const t=a("PhoneIcon",[["path",{d:"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z",key:"foiqr5"}]]);export{o as M,t as P};
|
||||
@@ -1 +1 @@
|
||||
{"id":"f1db3745-a031-477c-933f-6868f5829384","timestamp":1761049916604}
|
||||
{"id":"fce91ff8-40a0-4fdf-a058-a6b83ddf7c57","timestamp":1761050150660}
|
||||
@@ -1 +0,0 @@
|
||||
{"id":"f1db3745-a031-477c-933f-6868f5829384","timestamp":1761049916604,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
|
||||
@@ -0,0 +1 @@
|
||||
{"id":"fce91ff8-40a0-4fdf-a058-a6b83ddf7c57","timestamp":1761050150660,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
|
||||
1
.output/public/_nuxt/entry.DO240tkB.css
Normal file
1
.output/public/_nuxt/entry.DO240tkB.css
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
73
.output/server/chunks/_/members.mjs
Normal file
73
.output/server/chunks/_/members.mjs
Normal file
@@ -0,0 +1,73 @@
|
||||
import { promises } from 'fs';
|
||||
import path from 'path';
|
||||
|
||||
const getDataPath = (filename) => {
|
||||
const cwd = process.cwd();
|
||||
if (cwd.endsWith(".output")) {
|
||||
return path.join(cwd, "../server/data", filename);
|
||||
}
|
||||
return path.join(cwd, "server/data", filename);
|
||||
};
|
||||
const MEMBERS_FILE = getDataPath("members.json");
|
||||
const USERS_FILE = getDataPath("users.json");
|
||||
async function readMembers() {
|
||||
try {
|
||||
const data = await promises.readFile(MEMBERS_FILE, "utf-8");
|
||||
return JSON.parse(data);
|
||||
} catch (error) {
|
||||
if (error.code === "ENOENT") {
|
||||
return [];
|
||||
}
|
||||
console.error("Fehler beim Lesen der Mitgliederdaten:", error);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
async function writeMembers(members) {
|
||||
try {
|
||||
await promises.writeFile(MEMBERS_FILE, JSON.stringify(members, null, 2), "utf-8");
|
||||
return true;
|
||||
} catch (error) {
|
||||
console.error("Fehler beim Schreiben der Mitgliederdaten:", error);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
async function readUsers() {
|
||||
try {
|
||||
const data = await promises.readFile(USERS_FILE, "utf-8");
|
||||
return JSON.parse(data);
|
||||
} catch (error) {
|
||||
if (error.code === "ENOENT") {
|
||||
return [];
|
||||
}
|
||||
console.error("Fehler beim Lesen der Benutzerdaten:", error);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
async function saveMember(memberData) {
|
||||
const members = await readMembers();
|
||||
if (memberData.id) {
|
||||
const index = members.findIndex((m) => m.id === memberData.id);
|
||||
if (index !== -1) {
|
||||
members[index] = { ...members[index], ...memberData };
|
||||
} else {
|
||||
throw new Error("Mitglied nicht gefunden");
|
||||
}
|
||||
} else {
|
||||
const newMember = {
|
||||
id: `m${Date.now()}`,
|
||||
...memberData
|
||||
};
|
||||
members.push(newMember);
|
||||
}
|
||||
await writeMembers(members);
|
||||
return true;
|
||||
}
|
||||
async function deleteMember(id) {
|
||||
const members = await readMembers();
|
||||
const filtered = members.filter((m) => m.id !== id);
|
||||
await writeMembers(filtered);
|
||||
return true;
|
||||
}
|
||||
|
||||
export { readUsers as a, deleteMember as d, readMembers as r, saveMember as s };
|
||||
//# sourceMappingURL=members.mjs.map
|
||||
1
.output/server/chunks/_/members.mjs.map
Normal file
1
.output/server/chunks/_/members.mjs.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"members.mjs","sources":["../../../../server/utils/members.js"],"sourcesContent":null,"names":["fs"],"mappings":"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"}
|
||||
@@ -161,6 +161,17 @@ const client_manifest = {
|
||||
"node_modules/nuxt/dist/app/entry.js"
|
||||
]
|
||||
},
|
||||
"_SRZHqrjk.js": {
|
||||
"resourceType": "script",
|
||||
"module": true,
|
||||
"prefetch": true,
|
||||
"preload": true,
|
||||
"file": "SRZHqrjk.js",
|
||||
"name": "phone",
|
||||
"imports": [
|
||||
"node_modules/nuxt/dist/app/entry.js"
|
||||
]
|
||||
},
|
||||
"_XZ6RV9KH.js": {
|
||||
"resourceType": "script",
|
||||
"module": true,
|
||||
@@ -263,7 +274,7 @@ const client_manifest = {
|
||||
"module": true,
|
||||
"prefetch": true,
|
||||
"preload": true,
|
||||
"file": "DI2PgNgB.js",
|
||||
"file": "DbEmVw1_.js",
|
||||
"name": "entry",
|
||||
"src": "node_modules/nuxt/dist/app/entry.js",
|
||||
"isEntry": true,
|
||||
@@ -273,14 +284,14 @@ const client_manifest = {
|
||||
"node_modules/nuxt/dist/app/components/error-500.vue"
|
||||
],
|
||||
"css": [
|
||||
"entry.ldOScqNk.css"
|
||||
"entry.DO240tkB.css"
|
||||
],
|
||||
"assets": [
|
||||
"Harheimer TC.CKfYAfp1.svg"
|
||||
]
|
||||
},
|
||||
"entry.ldOScqNk.css": {
|
||||
"file": "entry.ldOScqNk.css",
|
||||
"entry.DO240tkB.css": {
|
||||
"file": "entry.DO240tkB.css",
|
||||
"resourceType": "style",
|
||||
"prefetch": true,
|
||||
"preload": true
|
||||
@@ -412,13 +423,14 @@ const client_manifest = {
|
||||
"module": true,
|
||||
"prefetch": true,
|
||||
"preload": true,
|
||||
"file": "CFErkncy.js",
|
||||
"file": "CN7ivzv2.js",
|
||||
"name": "kontakt",
|
||||
"src": "pages/kontakt.vue",
|
||||
"isDynamicEntry": true,
|
||||
"imports": [
|
||||
"node_modules/nuxt/dist/app/entry.js",
|
||||
"_C5SyyWEb.js",
|
||||
"_SRZHqrjk.js",
|
||||
"_C8kQt0fa.js",
|
||||
"_Qy3ajxTk.js"
|
||||
]
|
||||
@@ -546,6 +558,25 @@ const client_manifest = {
|
||||
"_DaSgy0Cl.js"
|
||||
]
|
||||
},
|
||||
"pages/mitgliederbereich/mitglieder.vue": {
|
||||
"resourceType": "script",
|
||||
"module": true,
|
||||
"prefetch": true,
|
||||
"preload": true,
|
||||
"file": "DLp4u09V.js",
|
||||
"name": "mitglieder",
|
||||
"src": "pages/mitgliederbereich/mitglieder.vue",
|
||||
"isDynamicEntry": true,
|
||||
"imports": [
|
||||
"node_modules/nuxt/dist/app/entry.js",
|
||||
"_Qy3ajxTk.js",
|
||||
"_CUq_0rkE.js",
|
||||
"_SRZHqrjk.js",
|
||||
"_C5SyyWEb.js",
|
||||
"_BteKZQ9T.js",
|
||||
"_C8kQt0fa.js"
|
||||
]
|
||||
},
|
||||
"pages/mitgliederbereich/profil.vue": {
|
||||
"resourceType": "script",
|
||||
"module": true,
|
||||
|
||||
200
.output/server/chunks/build/mitglieder-Dh7s1xvF.mjs
Normal file
200
.output/server/chunks/build/mitglieder-Dh7s1xvF.mjs
Normal file
@@ -0,0 +1,200 @@
|
||||
import { ref, computed, mergeProps, unref, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderList, ssrInterpolate, ssrRenderAttr, ssrIncludeBooleanAttr } from 'vue/server-renderer';
|
||||
import { UserPlus, Loader2, Mail, Phone, MapPin, FileText, Clock, Edit, Trash2, AlertCircle } from 'lucide-vue-next';
|
||||
import { u as useAuthStore } from './server.mjs';
|
||||
import { u as useHead } from './composables-CK-Mp9jS.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import '../routes/renderer.mjs';
|
||||
import 'vue-bundle-renderer/runtime';
|
||||
import 'unhead/server';
|
||||
import 'devalue';
|
||||
import 'unhead/utils';
|
||||
import 'pinia';
|
||||
import 'vue-router';
|
||||
|
||||
const _sfc_main = {
|
||||
__name: "mitglieder",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const authStore = useAuthStore();
|
||||
const isLoading = ref(true);
|
||||
const isSaving = ref(false);
|
||||
const members = ref([]);
|
||||
const showModal = ref(false);
|
||||
const editingMember = ref(null);
|
||||
const errorMessage = ref("");
|
||||
const formData = ref({
|
||||
name: "",
|
||||
email: "",
|
||||
phone: "",
|
||||
address: "",
|
||||
notes: ""
|
||||
});
|
||||
const canEdit = computed(() => {
|
||||
return authStore.role === "admin" || authStore.role === "vorstand";
|
||||
});
|
||||
const formatDate = (dateString) => {
|
||||
if (!dateString) return "";
|
||||
const date = new Date(dateString);
|
||||
return date.toLocaleDateString("de-DE", {
|
||||
year: "numeric",
|
||||
month: "2-digit",
|
||||
day: "2-digit",
|
||||
hour: "2-digit",
|
||||
minute: "2-digit"
|
||||
});
|
||||
};
|
||||
useHead({
|
||||
title: "Mitgliederliste - Harheimer TC"
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full py-16 bg-gray-50" }, _attrs))}><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><div class="flex justify-between items-center mb-6"><div><h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-2"> Mitgliederliste </h1><div class="w-24 h-1 bg-primary-600 mb-4"></div></div>`);
|
||||
if (canEdit.value) {
|
||||
_push(`<button class="flex items-center px-4 py-2 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors">`);
|
||||
_push(ssrRenderComponent(unref(UserPlus), {
|
||||
size: 20,
|
||||
class: "mr-2"
|
||||
}, null, _parent));
|
||||
_push(` Mitglied hinzufügen </button>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div>`);
|
||||
if (isLoading.value) {
|
||||
_push(`<div class="flex items-center justify-center py-12">`);
|
||||
_push(ssrRenderComponent(unref(Loader2), {
|
||||
size: 40,
|
||||
class: "animate-spin text-primary-600"
|
||||
}, null, _parent));
|
||||
_push(`</div>`);
|
||||
} else {
|
||||
_push(`<div class="space-y-4"><!--[-->`);
|
||||
ssrRenderList(members.value, (member) => {
|
||||
_push(`<div class="bg-white p-6 rounded-xl shadow-lg border border-gray-100"><div class="flex justify-between items-start"><div class="flex-1"><div class="flex items-center mb-2"><h3 class="text-xl font-semibold text-gray-900">${ssrInterpolate(member.name)}</h3>`);
|
||||
if (member.hasLogin) {
|
||||
_push(`<span class="ml-3 px-2 py-1 bg-green-100 text-green-800 text-xs font-medium rounded-full"> Hat Login </span>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
if (member.source === "manual") {
|
||||
_push(`<span class="ml-2 px-2 py-1 bg-blue-100 text-blue-800 text-xs font-medium rounded-full"> Manuell </span>`);
|
||||
} else {
|
||||
_push(`<span class="ml-2 px-2 py-1 bg-purple-100 text-purple-800 text-xs font-medium rounded-full"> Aus Login-System </span>`);
|
||||
}
|
||||
_push(`</div><div class="grid sm:grid-cols-2 gap-3 text-gray-600">`);
|
||||
if (member.email) {
|
||||
_push(`<div class="flex items-center">`);
|
||||
_push(ssrRenderComponent(unref(Mail), {
|
||||
size: 16,
|
||||
class: "mr-2 text-primary-600"
|
||||
}, null, _parent));
|
||||
_push(`<a${ssrRenderAttr("href", `mailto:${member.email}`)} class="hover:text-primary-600">${ssrInterpolate(member.email)}</a></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
if (member.phone) {
|
||||
_push(`<div class="flex items-center">`);
|
||||
_push(ssrRenderComponent(unref(Phone), {
|
||||
size: 16,
|
||||
class: "mr-2 text-primary-600"
|
||||
}, null, _parent));
|
||||
_push(`<a${ssrRenderAttr("href", `tel:${member.phone}`)} class="hover:text-primary-600">${ssrInterpolate(member.phone)}</a></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
if (member.address) {
|
||||
_push(`<div class="flex items-start col-span-2">`);
|
||||
_push(ssrRenderComponent(unref(MapPin), {
|
||||
size: 16,
|
||||
class: "mr-2 text-primary-600 mt-0.5"
|
||||
}, null, _parent));
|
||||
_push(`<span>${ssrInterpolate(member.address)}</span></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
if (member.notes) {
|
||||
_push(`<div class="flex items-start col-span-2">`);
|
||||
_push(ssrRenderComponent(unref(FileText), {
|
||||
size: 16,
|
||||
class: "mr-2 text-primary-600 mt-0.5"
|
||||
}, null, _parent));
|
||||
_push(`<span>${ssrInterpolate(member.notes)}</span></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
if (member.lastLogin) {
|
||||
_push(`<div class="flex items-center col-span-2 text-sm text-gray-500">`);
|
||||
_push(ssrRenderComponent(unref(Clock), {
|
||||
size: 16,
|
||||
class: "mr-2"
|
||||
}, null, _parent));
|
||||
_push(` Letzter Login: ${ssrInterpolate(formatDate(member.lastLogin))}</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></div>`);
|
||||
if (canEdit.value && member.editable) {
|
||||
_push(`<div class="flex space-x-2 ml-4"><button class="p-2 text-blue-600 hover:bg-blue-50 rounded-lg transition-colors" title="Bearbeiten">`);
|
||||
_push(ssrRenderComponent(unref(Edit), { size: 20 }, null, _parent));
|
||||
_push(`</button><button class="p-2 text-red-600 hover:bg-red-50 rounded-lg transition-colors" title="Löschen">`);
|
||||
_push(ssrRenderComponent(unref(Trash2), { size: 20 }, null, _parent));
|
||||
_push(`</button></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></div>`);
|
||||
});
|
||||
_push(`<!--]-->`);
|
||||
if (members.value.length === 0) {
|
||||
_push(`<div class="text-center py-12 text-gray-500"> Keine Mitglieder gefunden. </div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div>`);
|
||||
}
|
||||
if (showModal.value) {
|
||||
_push(`<div class="fixed inset-0 z-50 bg-black/50 flex items-center justify-center p-4"><div class="bg-white rounded-xl shadow-2xl max-w-2xl w-full p-8"><h2 class="text-2xl font-display font-bold text-gray-900 mb-6">${ssrInterpolate(editingMember.value ? "Mitglied bearbeiten" : "Mitglied hinzufügen")}</h2><form class="space-y-4"><div><label class="block text-sm font-medium text-gray-700 mb-2">Name *</label><input${ssrRenderAttr("value", formData.value.name)} type="text" required class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}></div><div><label class="block text-sm font-medium text-gray-700 mb-2">E-Mail</label><input${ssrRenderAttr("value", formData.value.email)} type="email" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}></div><div><label class="block text-sm font-medium text-gray-700 mb-2">Telefon</label><input${ssrRenderAttr("value", formData.value.phone)} type="tel" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}></div><div><label class="block text-sm font-medium text-gray-700 mb-2">Adresse</label><input${ssrRenderAttr("value", formData.value.address)} type="text" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}></div><div><label class="block text-sm font-medium text-gray-700 mb-2">Notizen</label><textarea rows="3" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}>${ssrInterpolate(formData.value.notes)}</textarea></div>`);
|
||||
if (errorMessage.value) {
|
||||
_push(`<div class="flex items-center p-3 rounded-md bg-red-50 text-red-700 text-sm">`);
|
||||
_push(ssrRenderComponent(unref(AlertCircle), {
|
||||
size: 20,
|
||||
class: "mr-2"
|
||||
}, null, _parent));
|
||||
_push(` ${ssrInterpolate(errorMessage.value)}</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`<div class="flex justify-end space-x-4 pt-4"><button type="button" class="px-6 py-2 border border-gray-300 text-gray-700 rounded-lg hover:bg-gray-50 transition-colors"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}> Abbrechen </button><button type="submit" class="px-6 py-2 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors flex items-center"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}>`);
|
||||
if (isSaving.value) {
|
||||
_push(ssrRenderComponent(unref(Loader2), {
|
||||
size: 20,
|
||||
class: "animate-spin mr-2"
|
||||
}, null, _parent));
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`<span>${ssrInterpolate(isSaving.value ? "Speichert..." : "Speichern")}</span></button></div></form></div></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></div>`);
|
||||
};
|
||||
}
|
||||
};
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/mitgliederbereich/mitglieder.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
//# sourceMappingURL=mitglieder-Dh7s1xvF.mjs.map
|
||||
1
.output/server/chunks/build/mitglieder-Dh7s1xvF.mjs.map
Normal file
1
.output/server/chunks/build/mitglieder-Dh7s1xvF.mjs.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"mitglieder-Dh7s1xvF.mjs","sources":["../../../../pages/mitgliederbereich/mitglieder.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_ssrRenderList","_ssrInterpolate","_ssrRenderComponent","_unref","_ssrRenderAttr"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAyMA,IAAA,MAAM,YAAY,YAAA,EAAY;AAE9B,IAAA,MAAM,SAAA,GAAY,IAAI,IAAI,CAAA;AAC1B,IAAA,MAAM,QAAA,GAAW,IAAI,KAAK,CAAA;AAC1B,IAAA,MAAM,OAAA,GAAU,GAAA,CAAI,EAAE,CAAA;AACtB,IAAA,MAAM,SAAA,GAAY,IAAI,KAAK,CAAA;AAC3B,IAAA,MAAM,aAAA,GAAgB,IAAI,IAAI,CAAA;AAC9B,IAAA,MAAM,YAAA,GAAe,IAAI,EAAE,CAAA;AAE3B,IAAA,MAAM,WAAW,GAAA,CAAI;AAAA,MACnB,IAAA,EAAM,EAAA;AAAA,MACN,KAAA,EAAO,EAAA;AAAA,MACP,KAAA,EAAO,EAAA;AAAA,MACP,OAAA,EAAS,EAAA;AAAA,MACT,KAAA,EAAO;AAAA,KACR,CAAA;AAED,IAAA,MAAM,OAAA,GAAU,SAAS,MAAM;AAC7B,MAAA,OAAO,SAAA,CAAU,IAAA,KAAS,OAAA,IAAW,SAAA,CAAU,IAAA,KAAS,UAAA;AAAA,IAC1D,CAAC,CAAA;AAqFD,IAAA,MAAM,UAAA,GAAa,CAAC,UAAA,KAAe;AACjC,MAAA,IAAI,CAAC,YAAY,OAAO,EAAA;AACxB,MAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,UAAU,CAAA;AAChC,MAAA,OAAO,IAAA,CAAK,mBAAmB,OAAA,EAAS;AAAA,QACtC,IAAA,EAAM,SAAA;AAAA,QACN,KAAA,EAAO,SAAA;AAAA,QACP,GAAA,EAAK,SAAA;AAAA,QACL,IAAA,EAAM,SAAA;AAAA,QACN,MAAA,EAAQ;AAAA,OACT,CAAA;AAAA,IACH,CAAA;AAWA,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;AAvUM,MAAA,KAAA,CAAA,CAAA,IAAA,EAAAA,eAAAC,UAAAA,CAAA,EAAA,OAAM,6BAAA,EAAA,EAA6B,MAAA,CAAA,CAAA,CAAA,qQAAA,CAAA,CAAA;AAU1B,MAAA,IAAA,OAAA,CAAA,KAAA,EAAO;;;UAIF,IAAA,EAAM,EAAA;AAAA,UAAI,KAAA,EAAM;AAAA,SAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;;;;AAMpB,MAAA,IAAA,SAAA,CAAA,KAAA,EAAS;;;UACR,IAAA,EAAM,EAAA;AAAA,UAAI,KAAA,EAAM;AAAA,SAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;;AAMPC,QAAAA,aAAAA,CAAA,OAAA,CAAA,QAAV,MAAA,KAAM;AAO4C,UAAA,KAAA,CAAA,CAAA,4NAAA,EAAAC,cAAAA,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA,KAAA,CAAA,CAAA;AAEtD,UAAA,IAAA,OAAO,QAAA,EAAQ;;;;;AAMf,UAAA,IAAA,MAAA,CAAO,WAAM,QAAA,EAAA;;;;;;AAcV,UAAA,IAAA,OAAO,KAAA,EAAK;;;cACd,IAAA,EAAM,EAAA;AAAA,cAAI,KAAA,EAAM;AAAA,aAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AACnB,YAAA,KAAA,CAAA,CAAA,EAAA,EAAA,aAAA,CAAA,MAAA,EAAI,UAAY,MAAA,CAAO,KAAK,EAAA,CAAA,CAAA,gCAAA,EAAsCA,cAAAA,CAAA,OAAO,KAAK,CAAA,CAAA,UAAA,CAAA,CAAA;;;;AAEzE,UAAA,IAAA,OAAO,KAAA,EAAK;;;cACb,IAAA,EAAM,EAAA;AAAA,cAAI,KAAA,EAAM;AAAA,aAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AACpB,YAAA,KAAA,CAAA,CAAA,EAAA,EAAA,aAAA,CAAA,MAAA,EAAI,OAAS,MAAA,CAAO,KAAK,EAAA,CAAA,CAAA,gCAAA,EAAsCA,cAAAA,CAAA,OAAO,KAAK,CAAA,CAAA,UAAA,CAAA,CAAA;;;;AAEtE,UAAA,IAAA,OAAO,OAAA,EAAO;;;cACd,IAAA,EAAM,EAAA;AAAA,cAAI,KAAA,EAAM;AAAA,aAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AAChB,YAAA,KAAA,CAAA,CAAA,MAAA,EAAAA,cAAAA,CAAA,MAAA,CAAO,OAAO,CAAA,CAAA,aAAA,CAAA,CAAA;AAAA,UAAA,CAAA,MAAA;;;AAEd,UAAA,IAAA,OAAO,KAAA,EAAK;;;cACV,IAAA,EAAM,EAAA;AAAA,cAAI,KAAA,EAAM;AAAA,aAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AAClB,YAAA,KAAA,CAAA,CAAA,MAAA,EAAAA,cAAAA,CAAA,MAAA,CAAO,KAAK,CAAA,CAAA,aAAA,CAAA,CAAA;AAAA,UAAA,CAAA,MAAA;;;AAEZ,UAAA,IAAA,OAAO,SAAA,EAAS;;;cACjB,IAAA,EAAM,EAAA;AAAA,cAAI,KAAA,EAAM;AAAA,aAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AACN,YAAA,KAAA,CAAA,CAAA,gBAAA,EAAA,cAAA,CAAA,UAAA,CAAW,MAAA,CAAO,SAAS,CAAA,CAAA,CAAA,MAAA,CAAA,CAAA;AAAA,UAAA,CAAA,MAAA;;;;cAKxC,OAAA,CAAA,KAAA,IAAW,OAAO,QAAA,EAAQ;;AAM1B,YAAA,KAAA,CAAAC,kBAAAA,CAAAC,KAAAA,CAAA,IAAA,CAAA,EAAA,EAAA,MAAM,EAAA,EAAE,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;AAON,YAAA,KAAA,CAAAD,kBAAAA,CAAAC,KAAAA,CAAA,MAAA,CAAA,EAAA,EAAA,MAAM,EAAA,EAAE,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;;;;;;AAMd,QAAA,IAAA,OAAA,CAAA,KAAA,CAAQ,MAAA,KAAM,CAAA,EAAA;;;;;;;AAOnB,MAAA,IAAA,SAAA,CAAA,KAAA,EAAS;iPAMR,aAAA,CAAA,KAAA,GAAa,qBAAA,GAAA,qBAAA,CAAA,CAAA,kHAAA,EAOHC,aAAAA,CAAA,OAAA,EAAA,QAAA,CAAA,KAAA,CAAS,IAAI,CAAA,CAAA,uIAAA,EAAA,qBAAA,CAIX,QAAA,CAAA,KAAQ,CAAA,GAAA,cAAA,EAAA,CAAA,4FAAA,EAOVA,aAAAA,CAAA,OAAA,EAAA,QAAA,CAAA,KAAA,CAAS,KAAK,CAAA,CAAA,+HAAA,EAAA,qBAAA,CAGZ,QAAA,CAAA,KAAQ,CAAA,GAAA,WAAA,GAAA,EAAA,CAAA,6FAAA,EAOVA,aAAAA,CAAA,OAAA,EAAA,SAAA,KAAA,CAAS,KAAK,CAAA,CAAA,6HAAA,EAAA,qBAAA,CAGZ,QAAA,CAAA,KAAQ,CAAA,GAAA,WAAA,GAAA,EAAA,CAAA,6FAAA,EAOVA,aAAAA,CAAA,OAAA,EAAA,QAAA,CAAA,KAAA,CAAS,OAAO,CAAA,CAAA,8HAAA,EAAA,qBAAA,CAGd,SAAA,KAAQ,CAAA,GAAA,WAAA,GAAA,EAAA,CAAA,2NAAA,EAAA,qBAAA,CAUR,QAAA,CAAA,KAAQ,CAAA,GAAA,WAAA,GAAA,EAAA,CAAA,CAAA,EAHVH,cAAAA,CAAA,QAAA,CAAA,KAAA,CAAS,KAAK,CAAA,CAAA,iBAAA,CAAA,CAAA;AAOhB,QAAA,IAAA,YAAA,CAAA,KAAA,EAAY;;;YACP,IAAA,EAAM,EAAA;AAAA,YAAI,KAAA,EAAM;AAAA,WAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;mCAC3B,YAAA,CAAA,KAAY,CAAA,CAAA,MAAA,CAAA,CAAA;AAAA,QAAA,CAAA,MAAA;;;AAQF,QAAA,KAAA,CAAA,CAAA,uKAAA,EAAA,qBAAA,CAAA,QAAA,CAAA,KAAQ,CAAA,GAAA,WAAA,GAAA,mMAOR,QAAA,CAAA,KAAQ,IAAA,WAAA,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA;AAEJ,QAAA,IAAA,QAAA,CAAA,KAAA,EAAQ;;YAAG,IAAA,EAAM,EAAA;AAAA,YAAI,KAAA,EAAM;AAAA,WAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;;AACjC,QAAA,KAAA,CAAA,CAAA,MAAA,EAAA,cAAA,CAAA,QAAA,CAAA,KAAA,GAAQ,cAAA,GAAA,WAAA,CAAA,CAAA,yCAAA,CAAA,CAAA;AAAA,MAAA,CAAA,MAAA;;;;;;;;;;;;;;;;"}
|
||||
@@ -397,6 +397,9 @@ const unhead_k2P3m_ZDyjlr2mMYnoDPwavjsDN8hBlk9cFai0bbopU = /* @__PURE__ */ defin
|
||||
function toArray(value) {
|
||||
return Array.isArray(value) ? value : [value];
|
||||
}
|
||||
const __nuxt_page_meta$3 = {
|
||||
layout: "default"
|
||||
};
|
||||
const __nuxt_page_meta$2 = {
|
||||
layout: "default"
|
||||
};
|
||||
@@ -415,7 +418,7 @@ const _routes = [
|
||||
{
|
||||
name: "login",
|
||||
path: "/login",
|
||||
meta: __nuxt_page_meta$2 || {},
|
||||
meta: __nuxt_page_meta$3 || {},
|
||||
component: () => import('./login-BdWGyHdA.mjs')
|
||||
},
|
||||
{
|
||||
@@ -548,7 +551,7 @@ const _routes = [
|
||||
{
|
||||
name: "mitgliederbereich",
|
||||
path: "/mitgliederbereich",
|
||||
meta: { ...__nuxt_page_meta$1 || {}, ...{ "middleware": "auth" } },
|
||||
meta: { ...__nuxt_page_meta$2 || {}, ...{ "middleware": "auth" } },
|
||||
component: () => import('./index-D7JtbHaf.mjs')
|
||||
},
|
||||
{
|
||||
@@ -559,8 +562,14 @@ const _routes = [
|
||||
{
|
||||
name: "mitgliederbereich-profil",
|
||||
path: "/mitgliederbereich/profil",
|
||||
meta: { ...__nuxt_page_meta || {}, ...{ "middleware": "auth" } },
|
||||
meta: { ...__nuxt_page_meta$1 || {}, ...{ "middleware": "auth" } },
|
||||
component: () => import('./profil-UUfhNGZ3.mjs')
|
||||
},
|
||||
{
|
||||
name: "mitgliederbereich-mitglieder",
|
||||
path: "/mitgliederbereich/mitglieder",
|
||||
meta: { ...__nuxt_page_meta || {}, ...{ "middleware": "auth" } },
|
||||
component: () => import('./mitglieder-Dh7s1xvF.mjs')
|
||||
}
|
||||
];
|
||||
const ROUTE_KEY_PARENTHESES_RE = /(:\w+)\([^)]+\)/g;
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"server.mjs","sources":["../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Ffetch.mjs","../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Fglobal-polyfills.mjs","../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Fnuxt.config.mjs","../../../../node_modules/nuxt/dist/app/nuxt.js","../../../../node_modules/nuxt/dist/app/components/injections.js","../../../../node_modules/nuxt/dist/app/utils.js","../../../../node_modules/nuxt/dist/app/composables/router.js","../../../../node_modules/nuxt/dist/app/composables/error.js","../../../../node_modules/nuxt/dist/app/composables/manifest.js","../../../../node_modules/nuxt/dist/app/composables/payload.js","../../../../node_modules/@pinia/nuxt/dist/runtime/payload-plugin.js","../../../../node_modules/nuxt/dist/head/runtime/plugins/unhead.js","../../../../node_modules/nuxt/dist/pages/runtime/utils.js","../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Froutes.mjs","../../../../node_modules/nuxt/dist/app/components/utils.js","../../../../node_modules/nuxt/dist/pages/runtime/router.options.js","../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Frouter.options.mjs","../../../../node_modules/nuxt/dist/pages/runtime/validate.js","../../../../stores/auth.js","../../../../middleware/auth.global.js","../../../../node_modules/nuxt/dist/app/middleware/manifest-route-rule.js","../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Fmiddleware.mjs","../../../../node_modules/nuxt/dist/pages/runtime/plugins/router.js","../../../../node_modules/nuxt/dist/app/plugins/revive-payload.server.js","../../../../node_modules/nuxt/dist/app/components/server-placeholder.js","../../../../node_modules/nuxt/dist/app/components/client-only.js","../../../../node_modules/nuxt/dist/app/components/nuxt-link.js","../../../../node_modules/@pinia/nuxt/dist/runtime/plugin.vue3.js","../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Fcomponents.plugin.mjs","../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Fplugins.server.mjs","../../../../node_modules/nuxt/dist/app/components/route-provider.js","../../../../node_modules/nuxt/dist/pages/runtime/page.js","../../../../assets/images/logos/Harheimer TC.svg","../../../../components/Navigation.vue","../../../../components/Footer.vue","../../../../app.vue","../../../../node_modules/nuxt/dist/app/components/nuxt-error-page.vue","../../../../node_modules/nuxt/dist/app/components/nuxt-root.vue","../../../../node_modules/nuxt/dist/app/entry.js"],"sourcesContent":null,"names":["$fetch","plugin","provide","plugins","createH3Error","createRadixRouter","login1RYyYL8mxx17qR_nmdKvywxx7lKOLXMFu8pTLfvTLYwMeta","indexqVbusfljIJ04j42RIA_KP4bSP7XytQIXdqcVfR3kPUAMeta","profilyVBy_UvZ8KvchY44_0SJbB0NHOad6MC_S9C8wfDdUWEMeta","__executeAsync","createRouter","entry","payload_plugin_1_bEQpMjikuQhbV8UJ0PxUqmSvPdmV1jDa5DURnKW4M","router_GNCWhvtYfLTYRZZ135CdFAEjxdMexN0ixiUYCAN_tpw","plugin_vue3_CQ_pO3THrTGIeYc0dvC91V75hY8qpo9B_8yZzOW5SFs","useRoute","_ssrRenderAttrs","_mergeProps","_push","_parent","_ssrRenderAttr","_imports_0","_createVNode","_ssrRenderClass","_unref","_ssrRenderList","_ssrInterpolate","_createTextVNode","_toDisplayString","useRouter","_ssrRenderComponent","ErrorComponent","RootComponent"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,29,30,31,36,37,38]}
|
||||
{"version":3,"file":"server.mjs","sources":["../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Ffetch.mjs","../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Fglobal-polyfills.mjs","../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Fnuxt.config.mjs","../../../../node_modules/nuxt/dist/app/nuxt.js","../../../../node_modules/nuxt/dist/app/components/injections.js","../../../../node_modules/nuxt/dist/app/utils.js","../../../../node_modules/nuxt/dist/app/composables/router.js","../../../../node_modules/nuxt/dist/app/composables/error.js","../../../../node_modules/nuxt/dist/app/composables/manifest.js","../../../../node_modules/nuxt/dist/app/composables/payload.js","../../../../node_modules/@pinia/nuxt/dist/runtime/payload-plugin.js","../../../../node_modules/nuxt/dist/head/runtime/plugins/unhead.js","../../../../node_modules/nuxt/dist/pages/runtime/utils.js","../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Froutes.mjs","../../../../node_modules/nuxt/dist/app/components/utils.js","../../../../node_modules/nuxt/dist/pages/runtime/router.options.js","../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Frouter.options.mjs","../../../../node_modules/nuxt/dist/pages/runtime/validate.js","../../../../stores/auth.js","../../../../middleware/auth.global.js","../../../../node_modules/nuxt/dist/app/middleware/manifest-route-rule.js","../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Fmiddleware.mjs","../../../../node_modules/nuxt/dist/pages/runtime/plugins/router.js","../../../../node_modules/nuxt/dist/app/plugins/revive-payload.server.js","../../../../node_modules/nuxt/dist/app/components/server-placeholder.js","../../../../node_modules/nuxt/dist/app/components/client-only.js","../../../../node_modules/nuxt/dist/app/components/nuxt-link.js","../../../../node_modules/@pinia/nuxt/dist/runtime/plugin.vue3.js","../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Fcomponents.plugin.mjs","../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Fplugins.server.mjs","../../../../node_modules/nuxt/dist/app/components/route-provider.js","../../../../node_modules/nuxt/dist/pages/runtime/page.js","../../../../assets/images/logos/Harheimer TC.svg","../../../../components/Navigation.vue","../../../../components/Footer.vue","../../../../app.vue","../../../../node_modules/nuxt/dist/app/components/nuxt-error-page.vue","../../../../node_modules/nuxt/dist/app/components/nuxt-root.vue","../../../../node_modules/nuxt/dist/app/entry.js"],"sourcesContent":null,"names":["$fetch","plugin","provide","plugins","createH3Error","createRadixRouter","login1RYyYL8mxx17qR_nmdKvywxx7lKOLXMFu8pTLfvTLYwMeta","indexqVbusfljIJ04j42RIA_KP4bSP7XytQIXdqcVfR3kPUAMeta","profilyVBy_UvZ8KvchY44_0SJbB0NHOad6MC_S9C8wfDdUWEMeta","mitglieder9TWncRC_sSS_zPWzxBDlRiNjjFojXSJny_uernMe_tAMeta","__executeAsync","createRouter","entry","payload_plugin_1_bEQpMjikuQhbV8UJ0PxUqmSvPdmV1jDa5DURnKW4M","router_GNCWhvtYfLTYRZZ135CdFAEjxdMexN0ixiUYCAN_tpw","plugin_vue3_CQ_pO3THrTGIeYc0dvC91V75hY8qpo9B_8yZzOW5SFs","useRoute","_ssrRenderAttrs","_mergeProps","_push","_parent","_ssrRenderAttr","_imports_0","_createVNode","_ssrRenderClass","_unref","_ssrRenderList","_ssrInterpolate","_createTextVNode","_toDisplayString","useRouter","_ssrRenderComponent","ErrorComponent","RootComponent"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,29,30,31,36,37,38]}
|
||||
@@ -4293,7 +4293,7 @@ function _expandFromEnv(value) {
|
||||
const _inlineRuntimeConfig = {
|
||||
"app": {
|
||||
"baseURL": "/",
|
||||
"buildId": "f1db3745-a031-477c-933f-6868f5829384",
|
||||
"buildId": "fce91ff8-40a0-4fdf-a058-a6b83ddf7c57",
|
||||
"buildAssetsDir": "/_nuxt/",
|
||||
"cdnURL": ""
|
||||
},
|
||||
@@ -4738,509 +4738,523 @@ const plugins = [
|
||||
];
|
||||
|
||||
const assets = {
|
||||
"/images/club_about_us.png": {
|
||||
"type": "image/png",
|
||||
"etag": "\"202e56-s4fLsHEgoAgKJeBRuI1qxPmqHV0\"",
|
||||
"mtime": "2025-10-21T12:32:00.851Z",
|
||||
"size": 2109014,
|
||||
"path": "../public/images/club_about_us.png"
|
||||
},
|
||||
"/data/mannschaften.csv": {
|
||||
"type": "text/csv; charset=utf-8",
|
||||
"etag": "\"858-l94GKn8Q0I5RQnhrM0ZPJsYUmcw\"",
|
||||
"mtime": "2025-10-21T12:32:00.851Z",
|
||||
"mtime": "2025-10-21T12:35:54.924Z",
|
||||
"size": 2136,
|
||||
"path": "../public/data/mannschaften.csv"
|
||||
},
|
||||
"/data/spielsysteme.csv": {
|
||||
"type": "text/csv; charset=utf-8",
|
||||
"etag": "\"9bc-4npLrNHYClsD0TKV5vSifxitfV0\"",
|
||||
"mtime": "2025-10-21T12:32:00.851Z",
|
||||
"mtime": "2025-10-21T12:35:54.924Z",
|
||||
"size": 2492,
|
||||
"path": "../public/data/spielsysteme.csv"
|
||||
},
|
||||
"/data/termine.csv": {
|
||||
"type": "text/csv; charset=utf-8",
|
||||
"etag": "\"2e8-sZtaHF6QRmOQHinTWOLAYRgo6xk\"",
|
||||
"mtime": "2025-10-21T12:32:00.851Z",
|
||||
"mtime": "2025-10-21T12:35:54.924Z",
|
||||
"size": 744,
|
||||
"path": "../public/data/termine.csv"
|
||||
},
|
||||
"/data/vereinsmeisterschaften.csv": {
|
||||
"type": "text/csv; charset=utf-8",
|
||||
"etag": "\"989-X8AB+Zegy2xUbjDtbQcXhuuyBDQ\"",
|
||||
"mtime": "2025-10-21T12:32:00.851Z",
|
||||
"mtime": "2025-10-21T12:35:54.924Z",
|
||||
"size": 2441,
|
||||
"path": "../public/data/vereinsmeisterschaften.csv"
|
||||
},
|
||||
"/documents/Tischtennisregeln light.pdf": {
|
||||
"type": "application/pdf",
|
||||
"etag": "\"5177b-y/88q2+Y3RRechJMqWhse21KRdQ\"",
|
||||
"mtime": "2025-10-21T12:32:00.851Z",
|
||||
"mtime": "2025-10-21T12:35:54.924Z",
|
||||
"size": 333691,
|
||||
"path": "../public/documents/Tischtennisregeln light.pdf"
|
||||
},
|
||||
"/documents/satzung.pdf": {
|
||||
"type": "application/pdf",
|
||||
"etag": "\"5c7cf-L0A3nT8D24T9sD57FFbij3QRpzw\"",
|
||||
"mtime": "2025-10-21T12:32:00.851Z",
|
||||
"mtime": "2025-10-21T12:35:54.924Z",
|
||||
"size": 378831,
|
||||
"path": "../public/documents/satzung.pdf"
|
||||
},
|
||||
"/images/club_about_us.png": {
|
||||
"type": "image/png",
|
||||
"etag": "\"202e56-s4fLsHEgoAgKJeBRuI1qxPmqHV0\"",
|
||||
"mtime": "2025-10-21T12:35:54.924Z",
|
||||
"size": 2109014,
|
||||
"path": "../public/images/club_about_us.png"
|
||||
},
|
||||
"/_nuxt/0xufrPn-.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"b10-/isfm3dyRIVsEjgvcmL/XPZzoKo\"",
|
||||
"mtime": "2025-10-21T12:32:00.847Z",
|
||||
"mtime": "2025-10-21T12:35:54.920Z",
|
||||
"size": 2832,
|
||||
"path": "../public/_nuxt/0xufrPn-.js"
|
||||
},
|
||||
"/_nuxt/48ve60fm.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"557-e04q6bcr4Wja5BTiX/uCY9jcaOk\"",
|
||||
"mtime": "2025-10-21T12:32:00.847Z",
|
||||
"mtime": "2025-10-21T12:35:54.920Z",
|
||||
"size": 1367,
|
||||
"path": "../public/_nuxt/48ve60fm.js"
|
||||
},
|
||||
"/_nuxt/B-ZRDHEi.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1744-1NcVDhC8iP9qzUGuLES4GLUFuNU\"",
|
||||
"mtime": "2025-10-21T12:32:00.847Z",
|
||||
"mtime": "2025-10-21T12:35:54.920Z",
|
||||
"size": 5956,
|
||||
"path": "../public/_nuxt/B-ZRDHEi.js"
|
||||
},
|
||||
"/_nuxt/B4mSF5Ac.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"185-hHs3mU4qOcQAkGQaPrUYGaG0yao\"",
|
||||
"mtime": "2025-10-21T12:32:00.847Z",
|
||||
"mtime": "2025-10-21T12:35:54.920Z",
|
||||
"size": 389,
|
||||
"path": "../public/_nuxt/B4mSF5Ac.js"
|
||||
},
|
||||
"/_nuxt/B8JkES4d.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1860-WvKC8RdCe6cXCpB1GzY85pS096Q\"",
|
||||
"mtime": "2025-10-21T12:32:00.847Z",
|
||||
"mtime": "2025-10-21T12:35:54.920Z",
|
||||
"size": 6240,
|
||||
"path": "../public/_nuxt/B8JkES4d.js"
|
||||
},
|
||||
"/_nuxt/BJFIhPLo.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"16e9-yq0/LFZyeArARUVXQVCw9WWyEhs\"",
|
||||
"mtime": "2025-10-21T12:32:00.847Z",
|
||||
"mtime": "2025-10-21T12:35:54.920Z",
|
||||
"size": 5865,
|
||||
"path": "../public/_nuxt/BJFIhPLo.js"
|
||||
},
|
||||
"/_nuxt/BLJfiAQ_.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1827-YlPmbtoIQqGYplyNk7VayRftNJ4\"",
|
||||
"mtime": "2025-10-21T12:32:00.847Z",
|
||||
"mtime": "2025-10-21T12:35:54.920Z",
|
||||
"size": 6183,
|
||||
"path": "../public/_nuxt/BLJfiAQ_.js"
|
||||
},
|
||||
"/_nuxt/BQ1JAN-t.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"4d4-D2c9LzMtu3t/oTdiDqO210OhOq0\"",
|
||||
"mtime": "2025-10-21T12:32:00.847Z",
|
||||
"mtime": "2025-10-21T12:35:54.920Z",
|
||||
"size": 1236,
|
||||
"path": "../public/_nuxt/BQ1JAN-t.js"
|
||||
},
|
||||
"/_nuxt/BTRcaDI_.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"e71-89mfqDG6lXCsNo8iythpikNOsNM\"",
|
||||
"mtime": "2025-10-21T12:32:00.847Z",
|
||||
"mtime": "2025-10-21T12:35:54.920Z",
|
||||
"size": 3697,
|
||||
"path": "../public/_nuxt/BTRcaDI_.js"
|
||||
},
|
||||
"/_nuxt/BVRiFo7f.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"dbf-bs5Lp4co8JtdiCR4NBZg2xEEpZE\"",
|
||||
"mtime": "2025-10-21T12:32:00.847Z",
|
||||
"mtime": "2025-10-21T12:35:54.920Z",
|
||||
"size": 3519,
|
||||
"path": "../public/_nuxt/BVRiFo7f.js"
|
||||
},
|
||||
"/_nuxt/BWWcyQAZ.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"685-pCeqOgBg8QXGBjOkvDQ5Miivcwk\"",
|
||||
"mtime": "2025-10-21T12:32:00.847Z",
|
||||
"mtime": "2025-10-21T12:35:54.920Z",
|
||||
"size": 1669,
|
||||
"path": "../public/_nuxt/BWWcyQAZ.js"
|
||||
},
|
||||
"/_nuxt/Be7mAYpw.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"13f6-nhcH7PpHXr9KCHrhZOBaqzyCANs\"",
|
||||
"mtime": "2025-10-21T12:32:00.847Z",
|
||||
"mtime": "2025-10-21T12:35:54.920Z",
|
||||
"size": 5110,
|
||||
"path": "../public/_nuxt/Be7mAYpw.js"
|
||||
},
|
||||
"/_nuxt/BkTrhdjg.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"81f-bXeZaccLlH7cSuSEhEG6Pk4vEzY\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.920Z",
|
||||
"size": 2079,
|
||||
"path": "../public/_nuxt/BkTrhdjg.js"
|
||||
},
|
||||
"/_nuxt/BneZCqgq.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1a9f-Hr2fThSa8cJCoHMhFwvPAqgbLZg\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.920Z",
|
||||
"size": 6815,
|
||||
"path": "../public/_nuxt/BneZCqgq.js"
|
||||
},
|
||||
"/_nuxt/BpG5pLwY.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"16e6-iqlwalhSHX6bpWAAiam6nLgiuVE\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.920Z",
|
||||
"size": 5862,
|
||||
"path": "../public/_nuxt/BpG5pLwY.js"
|
||||
},
|
||||
"/_nuxt/BteKZQ9T.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1ea-kmrGdt5SPmt15EiBI7kR9gXMQM0\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.920Z",
|
||||
"size": 490,
|
||||
"path": "../public/_nuxt/BteKZQ9T.js"
|
||||
},
|
||||
"/_nuxt/C0jrEzGC.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"5f0-uJRUZKhjlZl/nyiPAoO6Z/4LAHg\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.920Z",
|
||||
"size": 1520,
|
||||
"path": "../public/_nuxt/C0jrEzGC.js"
|
||||
},
|
||||
"/_nuxt/C5SyyWEb.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"2a5-06iX+CL3i0ysaqW9nu7Eg2YzDhQ\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.920Z",
|
||||
"size": 677,
|
||||
"path": "../public/_nuxt/C5SyyWEb.js"
|
||||
},
|
||||
"/_nuxt/C8kQt0fa.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"197-7X99z1xphxry8OnMwU7Ofs/uE0Q\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.920Z",
|
||||
"size": 407,
|
||||
"path": "../public/_nuxt/C8kQt0fa.js"
|
||||
},
|
||||
"/_nuxt/CFErkncy.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"20d5-n8y27a5DG3vq+zV80w2HAXHUyAw\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"size": 8405,
|
||||
"path": "../public/_nuxt/CFErkncy.js"
|
||||
},
|
||||
"/_nuxt/CHQH_CwJ.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1168-mBOIwVjM5LsxIx13Cs7oT3+LJ+k\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.920Z",
|
||||
"size": 4456,
|
||||
"path": "../public/_nuxt/CHQH_CwJ.js"
|
||||
},
|
||||
"/_nuxt/CKjxMu8n.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"faa-TEO7v2i4TXlLpDUt7LGSNlcm+Ew\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.920Z",
|
||||
"size": 4010,
|
||||
"path": "../public/_nuxt/CKjxMu8n.js"
|
||||
},
|
||||
"/_nuxt/CN7ivzv2.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1daf-KIlbDOIuT3G/zezUF5LO1f52Vtc\"",
|
||||
"mtime": "2025-10-21T12:35:54.920Z",
|
||||
"size": 7599,
|
||||
"path": "../public/_nuxt/CN7ivzv2.js"
|
||||
},
|
||||
"/_nuxt/CNvcEwxd.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"11e7-FT5oxPyA+c2iUA/l/5Ieuxws3Pc\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 4583,
|
||||
"path": "../public/_nuxt/CNvcEwxd.js"
|
||||
},
|
||||
"/_nuxt/CUVZhO0q.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"dfc-1G2To51pfChtkPrr4l+DG3FkOHk\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 3580,
|
||||
"path": "../public/_nuxt/CUVZhO0q.js"
|
||||
},
|
||||
"/_nuxt/CUq_0rkE.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"12d-JV4KW1fgT85/V3Ap13X4q2h9U3g\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 301,
|
||||
"path": "../public/_nuxt/CUq_0rkE.js"
|
||||
},
|
||||
"/_nuxt/CWEkTB1z.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"198-ej4DRqc3/5nSwWU3c6wbOD3Ib9w\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 408,
|
||||
"path": "../public/_nuxt/CWEkTB1z.js"
|
||||
},
|
||||
"/_nuxt/Cb5SbJ0y.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1d90-K3fsAPMrslrofiGV21WL0Fu94+E\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 7568,
|
||||
"path": "../public/_nuxt/Cb5SbJ0y.js"
|
||||
},
|
||||
"/_nuxt/CkzaQq3X.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"17d-+xKrHjeww4bpFFkkjUNLD/ebn5A\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 381,
|
||||
"path": "../public/_nuxt/CkzaQq3X.js"
|
||||
},
|
||||
"/_nuxt/CrCcIvVp.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"274-9U7hEMtgHqdnQopnKeJsBKqKyKw\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 628,
|
||||
"path": "../public/_nuxt/CrCcIvVp.js"
|
||||
},
|
||||
"/_nuxt/Cx4UcKGu.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"19d-5AMD0EnFEjOkM3qKDpC/NZZzwDI\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 413,
|
||||
"path": "../public/_nuxt/Cx4UcKGu.js"
|
||||
},
|
||||
"/_nuxt/Czdc6-TI.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"165-EMJ/yP2qajGIw0CL3y+L/hvMM/8\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 357,
|
||||
"path": "../public/_nuxt/Czdc6-TI.js"
|
||||
},
|
||||
"/_nuxt/D54FZQPM.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1556-GtYLKNALVpyOhSr1LrAIs5gIV7I\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 5462,
|
||||
"path": "../public/_nuxt/D54FZQPM.js"
|
||||
},
|
||||
"/_nuxt/DAACT36i.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1f9-dVOk5jAwb0VlMLJevIcT+s2NTgM\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 505,
|
||||
"path": "../public/_nuxt/DAACT36i.js"
|
||||
},
|
||||
"/_nuxt/DI2PgNgB.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"329ab-EjWl46ZcILHAjC+dZQ1H/9g0rQA\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"size": 207275,
|
||||
"path": "../public/_nuxt/DI2PgNgB.js"
|
||||
},
|
||||
"/_nuxt/DIYnFFZd.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"3518-Z2dO9ejuo/PHmRggMKxl1caQ7yo\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 13592,
|
||||
"path": "../public/_nuxt/DIYnFFZd.js"
|
||||
},
|
||||
"/_nuxt/DK8ar2Vw.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"bf0-gt2eLpxqF9V/T1JrusLBdWlTOB4\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 3056,
|
||||
"path": "../public/_nuxt/DK8ar2Vw.js"
|
||||
},
|
||||
"/_nuxt/DLp4u09V.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"2373-a6SinD9M0hf9fJlneHMFeVHePYU\"",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 9075,
|
||||
"path": "../public/_nuxt/DLp4u09V.js"
|
||||
},
|
||||
"/_nuxt/DQ89_Lrx.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1bdb-FX6FWYmVTmAWWkO9E2O91ImJoTI\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 7131,
|
||||
"path": "../public/_nuxt/DQ89_Lrx.js"
|
||||
},
|
||||
"/_nuxt/DaSgy0Cl.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"11f-soKnh1qfNJj5nvt+IcgQXYvg/z4\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 287,
|
||||
"path": "../public/_nuxt/DaSgy0Cl.js"
|
||||
},
|
||||
"/_nuxt/DaUHoOti.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"177f-xSuV2n3wrsWDBysy5o9XsakrXDw\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 6015,
|
||||
"path": "../public/_nuxt/DaUHoOti.js"
|
||||
},
|
||||
"/_nuxt/DbEmVw1_.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"32ab5-GBJvJfvbN3wGTaRplCzBmuFRQyk\"",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 207541,
|
||||
"path": "../public/_nuxt/DbEmVw1_.js"
|
||||
},
|
||||
"/_nuxt/DkeYb0_S.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1ce-xiaAbRvqQ+zffTXF3Gc7rq14R0U\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 462,
|
||||
"path": "../public/_nuxt/DkeYb0_S.js"
|
||||
},
|
||||
"/_nuxt/DlAUqK2U.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"5b-eFCz/UrraTh721pgAl0VxBNR1es\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 91,
|
||||
"path": "../public/_nuxt/DlAUqK2U.js"
|
||||
},
|
||||
"/_nuxt/DuCL6zMI.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"16a2-gJGadr4jKYMWO0Im01z6CSn+n1E\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 5794,
|
||||
"path": "../public/_nuxt/DuCL6zMI.js"
|
||||
},
|
||||
"/_nuxt/H0vOWBHN.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"2029-KNpFGDGtz8iRFY43F+s7ByzEpkM\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 8233,
|
||||
"path": "../public/_nuxt/H0vOWBHN.js"
|
||||
},
|
||||
"/_nuxt/Harheimer TC.CKfYAfp1.svg": {
|
||||
"type": "image/svg+xml",
|
||||
"etag": "\"1d2535-Tx2lTuuFn2hBqGZOnDan3/OdRU0\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 1910069,
|
||||
"path": "../public/_nuxt/Harheimer TC.CKfYAfp1.svg"
|
||||
},
|
||||
"/_nuxt/Qy3ajxTk.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"13f-LgrH17St2xFg+RPGvT3uJRaRfFw\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 319,
|
||||
"path": "../public/_nuxt/Qy3ajxTk.js"
|
||||
},
|
||||
"/_nuxt/RGsuuLA3.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"10bb-640PtonCPMgqRn3wO6U3UtHYmDM\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 4283,
|
||||
"path": "../public/_nuxt/RGsuuLA3.js"
|
||||
},
|
||||
"/_nuxt/SRZHqrjk.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"383-+7H4gpbdqNaMFlhjcQOVxgmex04\"",
|
||||
"mtime": "2025-10-21T12:35:54.921Z",
|
||||
"size": 899,
|
||||
"path": "../public/_nuxt/SRZHqrjk.js"
|
||||
},
|
||||
"/_nuxt/XZ6RV9KH.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"175-xr1poEaGS4yjOp907AsRAr6XHLI\"",
|
||||
"mtime": "2025-10-21T12:32:00.848Z",
|
||||
"mtime": "2025-10-21T12:35:54.922Z",
|
||||
"size": 373,
|
||||
"path": "../public/_nuxt/XZ6RV9KH.js"
|
||||
},
|
||||
"/_nuxt/YJHbYJtA.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"19f-nQw578pUen9o8yYaMA8Bwag6xho\"",
|
||||
"mtime": "2025-10-21T12:32:00.849Z",
|
||||
"mtime": "2025-10-21T12:35:54.922Z",
|
||||
"size": 415,
|
||||
"path": "../public/_nuxt/YJHbYJtA.js"
|
||||
},
|
||||
"/_nuxt/ZrOCUSmD.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"ee2-knvq//8tl4tcmRjFy6nWAy0dRBk\"",
|
||||
"mtime": "2025-10-21T12:32:00.849Z",
|
||||
"mtime": "2025-10-21T12:35:54.922Z",
|
||||
"size": 3810,
|
||||
"path": "../public/_nuxt/ZrOCUSmD.js"
|
||||
},
|
||||
"/_nuxt/entry.ldOScqNk.css": {
|
||||
"/_nuxt/entry.DO240tkB.css": {
|
||||
"type": "text/css; charset=utf-8",
|
||||
"etag": "\"b1a7-jTLcC6A4rNtCcMPUi8YvMGaTmxU\"",
|
||||
"mtime": "2025-10-21T12:32:00.849Z",
|
||||
"size": 45479,
|
||||
"path": "../public/_nuxt/entry.ldOScqNk.css"
|
||||
"etag": "\"b35f-gCEaBCdtBrnK3yH5288e0HxU0e8\"",
|
||||
"mtime": "2025-10-21T12:35:54.922Z",
|
||||
"size": 45919,
|
||||
"path": "../public/_nuxt/entry.DO240tkB.css"
|
||||
},
|
||||
"/_nuxt/error-404.CbXQcqJW.css": {
|
||||
"type": "text/css; charset=utf-8",
|
||||
"etag": "\"97e-Ty5bTTSEudJkO/DsGUoIf37xYxc\"",
|
||||
"mtime": "2025-10-21T12:32:00.849Z",
|
||||
"mtime": "2025-10-21T12:35:54.922Z",
|
||||
"size": 2430,
|
||||
"path": "../public/_nuxt/error-404.CbXQcqJW.css"
|
||||
},
|
||||
"/_nuxt/error-500.L485xXhD.css": {
|
||||
"type": "text/css; charset=utf-8",
|
||||
"etag": "\"773-jNt1QdCa+iqaSZb1mv/IQWC5p6w\"",
|
||||
"mtime": "2025-10-21T12:32:00.849Z",
|
||||
"mtime": "2025-10-21T12:35:54.922Z",
|
||||
"size": 1907,
|
||||
"path": "../public/_nuxt/error-500.L485xXhD.css"
|
||||
},
|
||||
"/_nuxt/index.BYYJS8tV.css": {
|
||||
"type": "text/css; charset=utf-8",
|
||||
"etag": "\"167-3j4dZVXlcTPVZDB5pP2uXGX7/QQ\"",
|
||||
"mtime": "2025-10-21T12:32:00.849Z",
|
||||
"mtime": "2025-10-21T12:35:54.922Z",
|
||||
"size": 359,
|
||||
"path": "../public/_nuxt/index.BYYJS8tV.css"
|
||||
},
|
||||
"/_nuxt/jVj3QaoK.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"196-xWXv220Sy3kJeouwzrQ/gnXllWQ\"",
|
||||
"mtime": "2025-10-21T12:32:00.849Z",
|
||||
"mtime": "2025-10-21T12:35:54.922Z",
|
||||
"size": 406,
|
||||
"path": "../public/_nuxt/jVj3QaoK.js"
|
||||
},
|
||||
"/_nuxt/rZgF5GAr.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"2163-F4ycM3bgzLo6kVIU09LeGUWE8SI\"",
|
||||
"mtime": "2025-10-21T12:32:00.849Z",
|
||||
"mtime": "2025-10-21T12:35:54.922Z",
|
||||
"size": 8547,
|
||||
"path": "../public/_nuxt/rZgF5GAr.js"
|
||||
},
|
||||
"/_nuxt/tnJjxGC6.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"abb-4G3/6bCNUQzUVLLE5tcXv6Rh+gc\"",
|
||||
"mtime": "2025-10-21T12:32:00.849Z",
|
||||
"mtime": "2025-10-21T12:35:54.922Z",
|
||||
"size": 2747,
|
||||
"path": "../public/_nuxt/tnJjxGC6.js"
|
||||
},
|
||||
"/_nuxt/y9BE7jdd.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"d8b-/UzKIx4Kl1VnbQibGZzrIbVIyG4\"",
|
||||
"mtime": "2025-10-21T12:32:00.849Z",
|
||||
"mtime": "2025-10-21T12:35:54.922Z",
|
||||
"size": 3467,
|
||||
"path": "../public/_nuxt/y9BE7jdd.js"
|
||||
},
|
||||
"/spielplaene/1. Mannschaft 2025⁄2026.pdf": {
|
||||
"type": "application/pdf",
|
||||
"etag": "\"64c6-+477M+gD/spwpWR9NO/tMJ/inCc\"",
|
||||
"mtime": "2025-10-21T12:32:00.851Z",
|
||||
"mtime": "2025-10-21T12:35:54.924Z",
|
||||
"size": 25798,
|
||||
"path": "../public/spielplaene/1. Mannschaft 2025⁄2026.pdf"
|
||||
},
|
||||
"/spielplaene/2. Mannschaft 2025⁄2026.pdf": {
|
||||
"type": "application/pdf",
|
||||
"etag": "\"5bfa-DRJMHLV15iss67lEISoGqSYmZjE\"",
|
||||
"mtime": "2025-10-21T12:32:00.851Z",
|
||||
"mtime": "2025-10-21T12:35:54.924Z",
|
||||
"size": 23546,
|
||||
"path": "../public/spielplaene/2. Mannschaft 2025⁄2026.pdf"
|
||||
},
|
||||
"/spielplaene/3. Mannschaft 2025⁄2026.pdf": {
|
||||
"type": "application/pdf",
|
||||
"etag": "\"7447-w933CPQdXhkWJ2AZOVdY0UgJnPo\"",
|
||||
"mtime": "2025-10-21T12:32:00.851Z",
|
||||
"mtime": "2025-10-21T12:35:54.924Z",
|
||||
"size": 29767,
|
||||
"path": "../public/spielplaene/3. Mannschaft 2025⁄2026.pdf"
|
||||
},
|
||||
"/spielplaene/4. Mannschaft 2025⁄2026.pdf": {
|
||||
"type": "application/pdf",
|
||||
"etag": "\"6a9b-4TPGn1yQlFUMRj7oB43SN//Np9o\"",
|
||||
"mtime": "2025-10-21T12:32:00.851Z",
|
||||
"mtime": "2025-10-21T12:35:54.924Z",
|
||||
"size": 27291,
|
||||
"path": "../public/spielplaene/4. Mannschaft 2025⁄2026.pdf"
|
||||
},
|
||||
"/spielplaene/5. Mannschaft 2025⁄2026.pdf": {
|
||||
"type": "application/pdf",
|
||||
"etag": "\"6523-5VUfCMaoiNhcwHhptHHTVJ3lSwQ\"",
|
||||
"mtime": "2025-10-21T12:32:00.851Z",
|
||||
"mtime": "2025-10-21T12:35:54.924Z",
|
||||
"size": 25891,
|
||||
"path": "../public/spielplaene/5. Mannschaft 2025⁄2026.pdf"
|
||||
},
|
||||
"/spielplaene/Jugend 11 2025⁄2026.pdf": {
|
||||
"type": "application/pdf",
|
||||
"etag": "\"52e9-3Rrk9UKUxPh80pBJ0w9oLVbe5dA\"",
|
||||
"mtime": "2025-10-21T12:32:00.851Z",
|
||||
"mtime": "2025-10-21T12:35:54.924Z",
|
||||
"size": 21225,
|
||||
"path": "../public/spielplaene/Jugend 11 2025⁄2026.pdf"
|
||||
},
|
||||
"/_nuxt/builds/latest.json": {
|
||||
"type": "application/json",
|
||||
"etag": "\"47-snXZQE0Fy3MUjZbnKAJCA6GyUDA\"",
|
||||
"mtime": "2025-10-21T12:32:00.839Z",
|
||||
"etag": "\"47-aVOE6xW+/CP0oWaTEr2HYwBdke4\"",
|
||||
"mtime": "2025-10-21T12:35:54.912Z",
|
||||
"size": 71,
|
||||
"path": "../public/_nuxt/builds/latest.json"
|
||||
},
|
||||
"/_nuxt/builds/meta/f1db3745-a031-477c-933f-6868f5829384.json": {
|
||||
"/_nuxt/builds/meta/fce91ff8-40a0-4fdf-a058-a6b83ddf7c57.json": {
|
||||
"type": "application/json",
|
||||
"etag": "\"8b-q+3bmAVJHURMkPuvxOuUzhycQ4Q\"",
|
||||
"mtime": "2025-10-21T12:32:00.836Z",
|
||||
"etag": "\"8b-b1XoCxbXohOLCWsLiZpM6sONkT0\"",
|
||||
"mtime": "2025-10-21T12:35:54.909Z",
|
||||
"size": 139,
|
||||
"path": "../public/_nuxt/builds/meta/f1db3745-a031-477c-933f-6868f5829384.json"
|
||||
"path": "../public/_nuxt/builds/meta/fce91ff8-40a0-4fdf-a058-a6b83ddf7c57.json"
|
||||
}
|
||||
};
|
||||
|
||||
@@ -5465,6 +5479,9 @@ const _lazy_zyEkIc = () => import('../routes/api/cms/users/reject.post.mjs');
|
||||
const _lazy_hmwxQi = () => import('../routes/api/cms/users/update-role.post.mjs');
|
||||
const _lazy_Ho2nl4 = () => import('../routes/api/contact.post.mjs');
|
||||
const _lazy_EK_x5_ = () => import('../routes/api/galerie.get.mjs');
|
||||
const _lazy_jYLuY1 = () => import('../routes/api/members.delete.mjs');
|
||||
const _lazy_HGAbG3 = () => import('../routes/api/members.get.mjs');
|
||||
const _lazy_XNetVh = () => import('../routes/api/members.post.mjs');
|
||||
const _lazy_FqQY6L = () => import('../routes/api/profile.get.mjs');
|
||||
const _lazy_m5wCSG = () => import('../routes/api/profile.put.mjs');
|
||||
const _lazy_JX4TVI = () => import('../routes/api/spielplaene.get.mjs');
|
||||
@@ -5484,6 +5501,9 @@ const handlers = [
|
||||
{ route: '/api/cms/users/update-role', handler: _lazy_hmwxQi, lazy: true, middleware: false, method: "post" },
|
||||
{ route: '/api/contact', handler: _lazy_Ho2nl4, lazy: true, middleware: false, method: "post" },
|
||||
{ route: '/api/galerie', handler: _lazy_EK_x5_, lazy: true, middleware: false, method: "get" },
|
||||
{ route: '/api/members', handler: _lazy_jYLuY1, lazy: true, middleware: false, method: "delete" },
|
||||
{ route: '/api/members', handler: _lazy_HGAbG3, lazy: true, middleware: false, method: "get" },
|
||||
{ route: '/api/members', handler: _lazy_XNetVh, lazy: true, middleware: false, method: "post" },
|
||||
{ route: '/api/profile', handler: _lazy_FqQY6L, lazy: true, middleware: false, method: "get" },
|
||||
{ route: '/api/profile', handler: _lazy_m5wCSG, lazy: true, middleware: false, method: "put" },
|
||||
{ route: '/api/spielplaene', handler: _lazy_JX4TVI, lazy: true, middleware: false, method: "get" },
|
||||
|
||||
60
.output/server/chunks/routes/api/members.delete.mjs
Normal file
60
.output/server/chunks/routes/api/members.delete.mjs
Normal file
@@ -0,0 +1,60 @@
|
||||
import { d as defineEventHandler, g as getCookie, c as createError, r as readBody } from '../../nitro/nitro.mjs';
|
||||
import { b as verifyToken, e as getUserById } from '../../_/auth.mjs';
|
||||
import { d as deleteMember } from '../../_/members.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'bcryptjs';
|
||||
import 'jsonwebtoken';
|
||||
import 'fs';
|
||||
import 'path';
|
||||
|
||||
const members_delete = defineEventHandler(async (event) => {
|
||||
try {
|
||||
const token = getCookie(event, "auth_token");
|
||||
if (!token) {
|
||||
throw createError({
|
||||
statusCode: 401,
|
||||
message: "Nicht authentifiziert."
|
||||
});
|
||||
}
|
||||
const decoded = verifyToken(token);
|
||||
if (!decoded) {
|
||||
throw createError({
|
||||
statusCode: 401,
|
||||
message: "Ung\xFCltiges Token."
|
||||
});
|
||||
}
|
||||
const user = await getUserById(decoded.id);
|
||||
if (!user || user.role !== "admin" && user.role !== "vorstand") {
|
||||
throw createError({
|
||||
statusCode: 403,
|
||||
message: "Keine Berechtigung zum L\xF6schen von Mitgliedern."
|
||||
});
|
||||
}
|
||||
const body = await readBody(event);
|
||||
const { id } = body;
|
||||
if (!id) {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
message: "Mitglieds-ID ist erforderlich."
|
||||
});
|
||||
}
|
||||
await deleteMember(id);
|
||||
return {
|
||||
success: true,
|
||||
message: "Mitglied erfolgreich gel\xF6scht."
|
||||
};
|
||||
} catch (error) {
|
||||
console.error("Fehler beim L\xF6schen des Mitglieds:", error);
|
||||
throw error;
|
||||
}
|
||||
});
|
||||
|
||||
export { members_delete as default };
|
||||
//# sourceMappingURL=members.delete.mjs.map
|
||||
1
.output/server/chunks/routes/api/members.delete.mjs.map
Normal file
1
.output/server/chunks/routes/api/members.delete.mjs.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"members.delete.mjs","sources":["../../../../../server/api/members.delete.js"],"sourcesContent":null,"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA,uBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,KAAA,GAAA,SAAA,CAAA,KAAA,EAAA,YAAA,CAAA;AAEA,IAAA,IAAA,CAAA,KAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,OAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,OAAA,GAAA,YAAA,KAAA,CAAA;AAEA,IAAA,IAAA,CAAA,OAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,OAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,IAAA,GAAA,MAAA,WAAA,CAAA,OAAA,CAAA,EAAA,CAAA;AAGA,IAAA,IAAA,CAAA,IAAA,IAAA,IAAA,CAAA,SAAA,OAAA,IAAA,IAAA,CAAA,SAAA,UAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,OAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,IAAA,GAAA,MAAA,QAAA,CAAA,KAAA,CAAA;AACA,IAAA,MAAA,EAAA,IAAA,GAAA,IAAA;AAEA,IAAA,IAAA,CAAA,EAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,OAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,aAAA,EAAA,CAAA;AAEA,IAAA,OAAA;AAAA,MACA,OAAA,EAAA,IAAA;AAAA,MACA,OAAA,EAAA;AAAA,KACA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,OAAA,CAAA,KAAA,CAAA,yCAAA,KAAA,CAAA;AACA,IAAA,MAAA,KAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
|
||||
109
.output/server/chunks/routes/api/members.get.mjs
Normal file
109
.output/server/chunks/routes/api/members.get.mjs
Normal file
@@ -0,0 +1,109 @@
|
||||
import { d as defineEventHandler, g as getCookie, c as createError } from '../../nitro/nitro.mjs';
|
||||
import { b as verifyToken } from '../../_/auth.mjs';
|
||||
import { r as readMembers, a as readUsers } from '../../_/members.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'bcryptjs';
|
||||
import 'jsonwebtoken';
|
||||
import 'fs';
|
||||
import 'path';
|
||||
|
||||
const members_get = defineEventHandler(async (event) => {
|
||||
var _a, _b, _c, _d;
|
||||
try {
|
||||
const token = getCookie(event, "auth_token");
|
||||
if (!token) {
|
||||
throw createError({
|
||||
statusCode: 401,
|
||||
message: "Nicht authentifiziert."
|
||||
});
|
||||
}
|
||||
const decoded = verifyToken(token);
|
||||
if (!decoded) {
|
||||
throw createError({
|
||||
statusCode: 401,
|
||||
message: "Ung\xFCltiges Token."
|
||||
});
|
||||
}
|
||||
const manualMembers = await readMembers();
|
||||
const registeredUsers = await readUsers();
|
||||
const mergedMembers = [];
|
||||
const processedEmails = /* @__PURE__ */ new Set();
|
||||
const processedNames = /* @__PURE__ */ new Set();
|
||||
for (const member of manualMembers) {
|
||||
const normalizedEmail = ((_a = member.email) == null ? void 0 : _a.toLowerCase().trim()) || "";
|
||||
const normalizedName = ((_b = member.name) == null ? void 0 : _b.toLowerCase().trim()) || "";
|
||||
mergedMembers.push({
|
||||
...member,
|
||||
source: "manual",
|
||||
editable: true,
|
||||
hasLogin: false
|
||||
});
|
||||
if (normalizedEmail) processedEmails.add(normalizedEmail);
|
||||
if (normalizedName) processedNames.add(normalizedName);
|
||||
}
|
||||
for (const user of registeredUsers) {
|
||||
if (!user.active) continue;
|
||||
const normalizedEmail = ((_c = user.email) == null ? void 0 : _c.toLowerCase().trim()) || "";
|
||||
const normalizedName = ((_d = user.name) == null ? void 0 : _d.toLowerCase().trim()) || "";
|
||||
let matchedManualIndex = -1;
|
||||
if (normalizedEmail) {
|
||||
matchedManualIndex = mergedMembers.findIndex(
|
||||
(m) => {
|
||||
var _a2;
|
||||
return m.source === "manual" && ((_a2 = m.email) == null ? void 0 : _a2.toLowerCase().trim()) === normalizedEmail;
|
||||
}
|
||||
);
|
||||
}
|
||||
if (matchedManualIndex === -1 && normalizedName) {
|
||||
matchedManualIndex = mergedMembers.findIndex(
|
||||
(m) => {
|
||||
var _a2;
|
||||
return m.source === "manual" && ((_a2 = m.name) == null ? void 0 : _a2.toLowerCase().trim()) === normalizedName;
|
||||
}
|
||||
);
|
||||
}
|
||||
if (matchedManualIndex !== -1) {
|
||||
mergedMembers[matchedManualIndex] = {
|
||||
...mergedMembers[matchedManualIndex],
|
||||
hasLogin: true,
|
||||
loginEmail: user.email,
|
||||
loginRole: user.role,
|
||||
lastLogin: user.lastLogin
|
||||
};
|
||||
} else {
|
||||
mergedMembers.push({
|
||||
id: user.id,
|
||||
name: user.name,
|
||||
email: user.email,
|
||||
phone: user.phone || "",
|
||||
address: "",
|
||||
notes: `Rolle: ${user.role}`,
|
||||
source: "login",
|
||||
editable: false,
|
||||
hasLogin: true,
|
||||
loginEmail: user.email,
|
||||
loginRole: user.role,
|
||||
lastLogin: user.lastLogin
|
||||
});
|
||||
}
|
||||
}
|
||||
mergedMembers.sort((a, b) => a.name.localeCompare(b.name));
|
||||
return {
|
||||
success: true,
|
||||
members: mergedMembers
|
||||
};
|
||||
} catch (error) {
|
||||
console.error("Fehler beim Abrufen der Mitgliederliste:", error);
|
||||
throw error;
|
||||
}
|
||||
});
|
||||
|
||||
export { members_get as default };
|
||||
//# sourceMappingURL=members.get.mjs.map
|
||||
1
.output/server/chunks/routes/api/members.get.mjs.map
Normal file
1
.output/server/chunks/routes/api/members.get.mjs.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"members.get.mjs","sources":["../../../../../server/api/members.get.js"],"sourcesContent":null,"names":["_a"],"mappings":"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"}
|
||||
67
.output/server/chunks/routes/api/members.post.mjs
Normal file
67
.output/server/chunks/routes/api/members.post.mjs
Normal file
@@ -0,0 +1,67 @@
|
||||
import { d as defineEventHandler, g as getCookie, c as createError, r as readBody } from '../../nitro/nitro.mjs';
|
||||
import { b as verifyToken, e as getUserById } from '../../_/auth.mjs';
|
||||
import { s as saveMember } from '../../_/members.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'bcryptjs';
|
||||
import 'jsonwebtoken';
|
||||
import 'fs';
|
||||
import 'path';
|
||||
|
||||
const members_post = defineEventHandler(async (event) => {
|
||||
try {
|
||||
const token = getCookie(event, "auth_token");
|
||||
if (!token) {
|
||||
throw createError({
|
||||
statusCode: 401,
|
||||
message: "Nicht authentifiziert."
|
||||
});
|
||||
}
|
||||
const decoded = verifyToken(token);
|
||||
if (!decoded) {
|
||||
throw createError({
|
||||
statusCode: 401,
|
||||
message: "Ung\xFCltiges Token."
|
||||
});
|
||||
}
|
||||
const user = await getUserById(decoded.id);
|
||||
if (!user || user.role !== "admin" && user.role !== "vorstand") {
|
||||
throw createError({
|
||||
statusCode: 403,
|
||||
message: "Keine Berechtigung zum Bearbeiten von Mitgliedern."
|
||||
});
|
||||
}
|
||||
const body = await readBody(event);
|
||||
const { id, name, email, phone, address, notes } = body;
|
||||
if (!name) {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
message: "Name ist erforderlich."
|
||||
});
|
||||
}
|
||||
await saveMember({
|
||||
id: id || void 0,
|
||||
name,
|
||||
email: email || "",
|
||||
phone: phone || "",
|
||||
address: address || "",
|
||||
notes: notes || ""
|
||||
});
|
||||
return {
|
||||
success: true,
|
||||
message: "Mitglied erfolgreich gespeichert."
|
||||
};
|
||||
} catch (error) {
|
||||
console.error("Fehler beim Speichern des Mitglieds:", error);
|
||||
throw error;
|
||||
}
|
||||
});
|
||||
|
||||
export { members_post as default };
|
||||
//# sourceMappingURL=members.post.mjs.map
|
||||
1
.output/server/chunks/routes/api/members.post.mjs.map
Normal file
1
.output/server/chunks/routes/api/members.post.mjs.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"members.post.mjs","sources":["../../../../../server/api/members.post.js"],"sourcesContent":null,"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA,qBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,KAAA,GAAA,SAAA,CAAA,KAAA,EAAA,YAAA,CAAA;AAEA,IAAA,IAAA,CAAA,KAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,OAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,OAAA,GAAA,YAAA,KAAA,CAAA;AAEA,IAAA,IAAA,CAAA,OAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,OAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,IAAA,GAAA,MAAA,WAAA,CAAA,OAAA,CAAA,EAAA,CAAA;AAGA,IAAA,IAAA,CAAA,IAAA,IAAA,IAAA,CAAA,SAAA,OAAA,IAAA,IAAA,CAAA,SAAA,UAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,OAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,IAAA,GAAA,MAAA,QAAA,CAAA,KAAA,CAAA;AACA,IAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,OAAA,KAAA,EAAA,OAAA,EAAA,OAAA,GAAA,IAAA;AAEA,IAAA,IAAA,CAAA,IAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,OAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,UAAA,CAAA;AAAA,MACA,IAAA,EAAA,IAAA,KAAA,CAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA,KAAA,IAAA,EAAA;AAAA,MACA,OAAA,KAAA,IAAA,EAAA;AAAA,MACA,SAAA,OAAA,IAAA,EAAA;AAAA,MACA,OAAA,KAAA,IAAA;AAAA,KACA,CAAA;AAEA,IAAA,OAAA;AAAA,MACA,OAAA,EAAA,IAAA;AAAA,MACA,OAAA,EAAA;AAAA,KACA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,OAAA,CAAA,KAAA,CAAA,wCAAA,KAAA,CAAA;AACA,IAAA,MAAA,KAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
|
||||
@@ -272,7 +272,7 @@ async function renderInlineStyles(usedModules) {
|
||||
|
||||
const renderSSRHeadOptions = {"omitLineBreaks":true};
|
||||
|
||||
const entryFileName = "DI2PgNgB.js";
|
||||
const entryFileName = "DbEmVw1_.js";
|
||||
|
||||
globalThis.__buildAssetsURL = buildAssetsURL;
|
||||
globalThis.__publicAssetsURL = publicAssetsURL;
|
||||
|
||||
@@ -8,14 +8,23 @@
|
||||
</h1>
|
||||
<div class="w-24 h-1 bg-primary-600 mb-4" />
|
||||
</div>
|
||||
<button
|
||||
v-if="canEdit"
|
||||
@click="openAddModal"
|
||||
class="flex items-center px-4 py-2 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"
|
||||
>
|
||||
<UserPlus :size="20" class="mr-2" />
|
||||
Mitglied hinzufügen
|
||||
</button>
|
||||
<div class="flex items-center space-x-3">
|
||||
<button
|
||||
@click="viewMode = viewMode === 'cards' ? 'table' : 'cards'"
|
||||
class="flex items-center px-4 py-2 bg-gray-100 hover:bg-gray-200 text-gray-700 font-semibold rounded-lg transition-colors"
|
||||
>
|
||||
<component :is="viewMode === 'cards' ? Table2 : Grid3x3" :size="20" class="mr-2" />
|
||||
{{ viewMode === 'cards' ? 'Tabelle' : 'Karten' }}
|
||||
</button>
|
||||
<button
|
||||
v-if="canEdit"
|
||||
@click="openAddModal"
|
||||
class="flex items-center px-4 py-2 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"
|
||||
>
|
||||
<UserPlus :size="20" class="mr-2" />
|
||||
Mitglied hinzufügen
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Loading State -->
|
||||
@@ -23,7 +32,83 @@
|
||||
<Loader2 :size="40" class="animate-spin text-primary-600" />
|
||||
</div>
|
||||
|
||||
<!-- Members List -->
|
||||
<!-- Table View -->
|
||||
<div v-else-if="viewMode === 'table'" class="bg-white rounded-xl shadow-lg overflow-hidden">
|
||||
<div class="overflow-x-auto">
|
||||
<table class="min-w-full divide-y divide-gray-200">
|
||||
<thead class="bg-gray-50">
|
||||
<tr>
|
||||
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Name</th>
|
||||
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">E-Mail</th>
|
||||
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Telefon</th>
|
||||
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Status</th>
|
||||
<th v-if="canEdit" class="px-4 py-3 text-right text-xs font-medium text-gray-500 uppercase tracking-wider">Aktionen</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="bg-white divide-y divide-gray-200">
|
||||
<tr v-for="member in members" :key="member.id" class="hover:bg-gray-50">
|
||||
<td class="px-4 py-3 whitespace-nowrap">
|
||||
<div class="text-sm font-medium text-gray-900">{{ member.name }}</div>
|
||||
<div v-if="member.notes" class="text-xs text-gray-500">{{ member.notes }}</div>
|
||||
</td>
|
||||
<td class="px-4 py-3 whitespace-nowrap">
|
||||
<a v-if="member.email" :href="`mailto:${member.email}`" class="text-sm text-primary-600 hover:text-primary-800">
|
||||
{{ member.email }}
|
||||
</a>
|
||||
<span v-else class="text-sm text-gray-400">-</span>
|
||||
</td>
|
||||
<td class="px-4 py-3 whitespace-nowrap">
|
||||
<a v-if="member.phone" :href="`tel:${member.phone}`" class="text-sm text-primary-600 hover:text-primary-800">
|
||||
{{ member.phone }}
|
||||
</a>
|
||||
<span v-else class="text-sm text-gray-400">-</span>
|
||||
</td>
|
||||
<td class="px-4 py-3 whitespace-nowrap">
|
||||
<div class="flex items-center space-x-2">
|
||||
<span
|
||||
v-if="member.hasLogin"
|
||||
class="px-2 py-1 bg-green-100 text-green-800 text-xs font-medium rounded-full"
|
||||
>
|
||||
Login
|
||||
</span>
|
||||
<span
|
||||
:class="member.source === 'manual' ? 'bg-blue-100 text-blue-800' : 'bg-purple-100 text-purple-800'"
|
||||
class="px-2 py-1 text-xs font-medium rounded-full"
|
||||
>
|
||||
{{ member.source === 'manual' ? 'Manuell' : 'System' }}
|
||||
</span>
|
||||
</div>
|
||||
</td>
|
||||
<td v-if="canEdit" class="px-4 py-3 whitespace-nowrap text-right text-sm font-medium">
|
||||
<div v-if="member.editable" class="flex justify-end space-x-2">
|
||||
<button
|
||||
@click="openEditModal(member)"
|
||||
class="text-blue-600 hover:text-blue-900"
|
||||
title="Bearbeiten"
|
||||
>
|
||||
<Edit :size="18" />
|
||||
</button>
|
||||
<button
|
||||
@click="confirmDelete(member)"
|
||||
class="text-red-600 hover:text-red-900"
|
||||
title="Löschen"
|
||||
>
|
||||
<Trash2 :size="18" />
|
||||
</button>
|
||||
</div>
|
||||
<span v-else class="text-gray-400 text-xs">Nicht editierbar</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div v-if="members.length === 0" class="text-center py-12 text-gray-500">
|
||||
Keine Mitglieder gefunden.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Cards View -->
|
||||
<div v-else class="space-y-4">
|
||||
<div
|
||||
v-for="member in members"
|
||||
@@ -114,15 +199,27 @@
|
||||
</h2>
|
||||
|
||||
<form @submit.prevent="saveMember" class="space-y-4">
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Name *</label>
|
||||
<input
|
||||
v-model="formData.name"
|
||||
type="text"
|
||||
required
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
:disabled="isSaving"
|
||||
/>
|
||||
<div class="grid grid-cols-2 gap-4">
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Vorname *</label>
|
||||
<input
|
||||
v-model="formData.firstName"
|
||||
type="text"
|
||||
required
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
:disabled="isSaving"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Nachname *</label>
|
||||
<input
|
||||
v-model="formData.lastName"
|
||||
type="text"
|
||||
required
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
:disabled="isSaving"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
@@ -197,7 +294,7 @@
|
||||
|
||||
<script setup>
|
||||
import { ref, computed, onMounted } from 'vue'
|
||||
import { Users, UserPlus, Mail, Phone, MapPin, FileText, Clock, Edit, Trash2, Loader2, AlertCircle } from 'lucide-vue-next'
|
||||
import { Users, UserPlus, Mail, Phone, MapPin, FileText, Clock, Edit, Trash2, Loader2, AlertCircle, Table2, Grid3x3 } from 'lucide-vue-next'
|
||||
|
||||
const authStore = useAuthStore()
|
||||
|
||||
@@ -207,9 +304,11 @@ const members = ref([])
|
||||
const showModal = ref(false)
|
||||
const editingMember = ref(null)
|
||||
const errorMessage = ref('')
|
||||
const viewMode = ref('table') // 'table' or 'cards'
|
||||
|
||||
const formData = ref({
|
||||
name: '',
|
||||
firstName: '',
|
||||
lastName: '',
|
||||
email: '',
|
||||
phone: '',
|
||||
address: '',
|
||||
@@ -235,7 +334,8 @@ const loadMembers = async () => {
|
||||
const openAddModal = () => {
|
||||
editingMember.value = null
|
||||
formData.value = {
|
||||
name: '',
|
||||
firstName: '',
|
||||
lastName: '',
|
||||
email: '',
|
||||
phone: '',
|
||||
address: '',
|
||||
@@ -248,7 +348,8 @@ const openAddModal = () => {
|
||||
const openEditModal = (member) => {
|
||||
editingMember.value = member
|
||||
formData.value = {
|
||||
name: member.name,
|
||||
firstName: member.firstName || '',
|
||||
lastName: member.lastName || '',
|
||||
email: member.email || '',
|
||||
phone: member.phone || '',
|
||||
address: member.address || '',
|
||||
|
||||
@@ -33,10 +33,12 @@ export default defineEventHandler(async (event) => {
|
||||
// First, add all manual members
|
||||
for (const member of manualMembers) {
|
||||
const normalizedEmail = member.email?.toLowerCase().trim() || ''
|
||||
const normalizedName = member.name?.toLowerCase().trim() || ''
|
||||
const fullName = `${member.firstName || ''} ${member.lastName || ''}`.trim()
|
||||
const normalizedName = fullName.toLowerCase()
|
||||
|
||||
mergedMembers.push({
|
||||
...member,
|
||||
name: fullName, // Computed for display
|
||||
source: 'manual',
|
||||
editable: true,
|
||||
hasLogin: false
|
||||
|
||||
@@ -32,18 +32,19 @@ export default defineEventHandler(async (event) => {
|
||||
}
|
||||
|
||||
const body = await readBody(event)
|
||||
const { id, name, email, phone, address, notes } = body
|
||||
const { id, firstName, lastName, email, phone, address, notes } = body
|
||||
|
||||
if (!name) {
|
||||
if (!firstName || !lastName) {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
message: 'Name ist erforderlich.'
|
||||
message: 'Vorname und Nachname sind erforderlich.'
|
||||
})
|
||||
}
|
||||
|
||||
await saveMember({
|
||||
id: id || undefined,
|
||||
name,
|
||||
firstName,
|
||||
lastName,
|
||||
email: email || '',
|
||||
phone: phone || '',
|
||||
address: address || '',
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
[
|
||||
{
|
||||
"id": "m1",
|
||||
"name": "Max Mustermann",
|
||||
"firstName": "Max",
|
||||
"lastName": "Mustermann",
|
||||
"email": "max@example.com",
|
||||
"phone": "069 123456",
|
||||
"address": "Musterstraße 1, 60437 Frankfurt",
|
||||
@@ -9,7 +10,8 @@
|
||||
},
|
||||
{
|
||||
"id": "m2",
|
||||
"name": "Anna Schmidt",
|
||||
"firstName": "Anna",
|
||||
"lastName": "Schmidt",
|
||||
"email": "",
|
||||
"phone": "069 234567",
|
||||
"address": "Hauptstraße 5, 60437 Frankfurt",
|
||||
|
||||
Reference in New Issue
Block a user