Add public/private news system with homepage display

This commit is contained in:
Torsten Schulz (local)
2025-10-21 15:26:28 +02:00
parent f0b628d746
commit 72c1039aa3
28 changed files with 272 additions and 126 deletions

View File

@@ -1,5 +1,5 @@
{
"date": "2025-10-21T13:21:52.912Z",
"date": "2025-10-21T13:25:02.619Z",
"preset": "node-server",
"framework": {
"name": "nuxt",

View File

@@ -1 +1 @@
{"id":"7c522edc-1fe9-4329-82a6-fb4c52573799","timestamp":1761052906091}
{"id":"87a74d40-a4d3-4127-9775-3a14a30de796","timestamp":1761053095415}

View File

@@ -1 +0,0 @@
{"id":"7c522edc-1fe9-4329-82a6-fb4c52573799","timestamp":1761052906091,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}

View File

@@ -0,0 +1 @@
{"id":"87a74d40-a4d3-4127-9775-3a14a30de796","timestamp":1761053095415,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}

View File

@@ -1,5 +1,6 @@
import { promises } from 'fs';
import path from 'path';
import { randomUUID } from 'crypto';
const getDataPath = (filename) => {
const cwd = process.cwd();
@@ -54,8 +55,9 @@ async function saveMember(memberData) {
}
} else {
const newMember = {
id: `m${Date.now()}`,
...memberData
...memberData,
id: randomUUID()
// Cryptographically secure unique ID
};
members.push(newMember);
}

View File

@@ -1 +1 @@
{"version":3,"file":"members.mjs","sources":["../../../../server/utils/members.js"],"sourcesContent":null,"names":["fs"],"mappings":"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"}
{"version":3,"file":"members.mjs","sources":["../../../../server/utils/members.js"],"sourcesContent":null,"names":["fs"],"mappings":"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"}

View File

@@ -1,5 +1,6 @@
import { promises } from 'fs';
import path from 'path';
import { randomUUID } from 'crypto';
const getDataPath = (filename) => {
const cwd = process.cwd();
@@ -46,8 +47,8 @@ async function saveNews(newsData) {
} else {
const newItem = {
...newsData,
id: `n${Date.now()}`,
// ID must come AFTER ...newsData to not be overwritten
id: randomUUID(),
// Cryptographically secure unique ID
created: (/* @__PURE__ */ new Date()).toISOString(),
updated: (/* @__PURE__ */ new Date()).toISOString()
};

View File

@@ -1 +1 @@
{"version":3,"file":"news.mjs","sources":["../../../../server/utils/news.js"],"sourcesContent":null,"names":["fs"],"mappings":";;;AAIA,MAAM,WAAA,GAAc,CAAC,QAAA,KAAa;AAChC,EAAA,MAAM,GAAA,GAAM,QAAQ,GAAA,EAAI;AAGxB,EAAA,IAAI,GAAA,CAAI,QAAA,CAAS,SAAS,CAAA,EAAG;AAC3B,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,GAAA,EAAK,gBAAA,EAAkB,QAAQ,CAAA;AAAA,EAClD;AAGA,EAAA,OAAO,IAAA,CAAK,IAAA,CAAK,GAAA,EAAK,aAAA,EAAe,QAAQ,CAAA;AAC/C,CAAA;AAEA,MAAM,SAAA,GAAY,YAAY,WAAW,CAAA;AAGzC,eAAsB,QAAA,GAAW;AAC/B,EAAA,IAAI;AACF,IAAA,MAAM,IAAA,GAAO,MAAMA,QAAA,CAAG,QAAA,CAAS,WAAW,OAAO,CAAA;AACjD,IAAA,OAAO,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,EACxB,SAAS,KAAA,EAAO;AACd,IAAA,IAAI,KAAA,CAAM,SAAS,QAAA,EAAU;AAC3B,MAAA,OAAO,EAAC;AAAA,IACV;AACA,IAAA,OAAA,CAAQ,KAAA,CAAM,+BAA+B,KAAK,CAAA;AAClD,IAAA,OAAO,EAAC;AAAA,EACV;AACF;AAGA,eAAsB,UAAU,IAAA,EAAM;AACpC,EAAA,IAAI;AACF,IAAA,MAAMA,QAAA,CAAG,UAAU,SAAA,EAAW,IAAA,CAAK,UAAU,IAAA,EAAM,IAAA,EAAM,CAAC,CAAA,EAAG,OAAO,CAAA;AACpE,IAAA,OAAO,IAAA;AAAA,EACT,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,mCAAmC,KAAK,CAAA;AACtD,IAAA,OAAO,KAAA;AAAA,EACT;AACF;AASA,eAAsB,SAAS,QAAA,EAAU;AACvC,EAAA,MAAM,QAAA,GAAW,MAAM,QAAA,EAAS;AAEhC,EAAA,IAAI,SAAS,EAAA,EAAI;AAEf,IAAA,MAAM,QAAQ,QAAA,CAAS,SAAA,CAAU,OAAK,CAAA,CAAE,EAAA,KAAO,SAAS,EAAE,CAAA;AAC1D,IAAA,IAAI,UAAU,EAAA,EAAI;AAChB,MAAA,QAAA,CAAS,KAAK,CAAA,GAAI;AAAA,QAChB,GAAG,SAAS,KAAK,CAAA;AAAA,QACjB,GAAG,QAAA;AAAA,QACH,OAAA,EAAA,iBAAS,IAAI,IAAA,EAAK,EAAE,WAAA;AAAY,OAClC;AAAA,IACF,CAAA,MAAO;AACL,MAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,IACvC;AAAA,EACF,CAAA,MAAO;AAEL,IAAA,MAAM,OAAA,GAAU;AAAA,MACd,GAAG,QAAA;AAAA,MACH,EAAA,EAAI,CAAA,CAAA,EAAI,IAAA,CAAK,GAAA,EAAK,CAAA,CAAA;AAAA;AAAA,MAClB,OAAA,EAAA,iBAAS,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,MAChC,OAAA,EAAA,iBAAS,IAAI,IAAA,EAAK,EAAE,WAAA;AAAY,KAClC;AACA,IAAA,QAAA,CAAS,QAAQ,OAAO,CAAA;AAAA,EAC1B;AAEA,EAAA,MAAM,UAAU,QAAQ,CAAA;AACxB,EAAA,OAAO,IAAA;AACT;AAGA,eAAsB,WAAW,EAAA,EAAI;AACnC,EAAA,MAAM,QAAA,GAAW,MAAM,QAAA,EAAS;AAChC,EAAA,MAAM,WAAW,QAAA,CAAS,MAAA,CAAO,CAAA,CAAA,KAAK,CAAA,CAAE,OAAO,EAAE,CAAA;AACjD,EAAA,MAAM,UAAU,QAAQ,CAAA;AACxB,EAAA,OAAO,IAAA;AACT;;;;"}
{"version":3,"file":"news.mjs","sources":["../../../../server/utils/news.js"],"sourcesContent":null,"names":["fs"],"mappings":";;;;AAKA,MAAM,WAAA,GAAc,CAAC,QAAA,KAAa;AAChC,EAAA,MAAM,GAAA,GAAM,QAAQ,GAAA,EAAI;AAGxB,EAAA,IAAI,GAAA,CAAI,QAAA,CAAS,SAAS,CAAA,EAAG;AAC3B,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,GAAA,EAAK,gBAAA,EAAkB,QAAQ,CAAA;AAAA,EAClD;AAGA,EAAA,OAAO,IAAA,CAAK,IAAA,CAAK,GAAA,EAAK,aAAA,EAAe,QAAQ,CAAA;AAC/C,CAAA;AAEA,MAAM,SAAA,GAAY,YAAY,WAAW,CAAA;AAGzC,eAAsB,QAAA,GAAW;AAC/B,EAAA,IAAI;AACF,IAAA,MAAM,IAAA,GAAO,MAAMA,QAAA,CAAG,QAAA,CAAS,WAAW,OAAO,CAAA;AACjD,IAAA,OAAO,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,EACxB,SAAS,KAAA,EAAO;AACd,IAAA,IAAI,KAAA,CAAM,SAAS,QAAA,EAAU;AAC3B,MAAA,OAAO,EAAC;AAAA,IACV;AACA,IAAA,OAAA,CAAQ,KAAA,CAAM,+BAA+B,KAAK,CAAA;AAClD,IAAA,OAAO,EAAC;AAAA,EACV;AACF;AAGA,eAAsB,UAAU,IAAA,EAAM;AACpC,EAAA,IAAI;AACF,IAAA,MAAMA,QAAA,CAAG,UAAU,SAAA,EAAW,IAAA,CAAK,UAAU,IAAA,EAAM,IAAA,EAAM,CAAC,CAAA,EAAG,OAAO,CAAA;AACpE,IAAA,OAAO,IAAA;AAAA,EACT,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,mCAAmC,KAAK,CAAA;AACtD,IAAA,OAAO,KAAA;AAAA,EACT;AACF;AASA,eAAsB,SAAS,QAAA,EAAU;AACvC,EAAA,MAAM,QAAA,GAAW,MAAM,QAAA,EAAS;AAEhC,EAAA,IAAI,SAAS,EAAA,EAAI;AAEf,IAAA,MAAM,QAAQ,QAAA,CAAS,SAAA,CAAU,OAAK,CAAA,CAAE,EAAA,KAAO,SAAS,EAAE,CAAA;AAC1D,IAAA,IAAI,UAAU,EAAA,EAAI;AAChB,MAAA,QAAA,CAAS,KAAK,CAAA,GAAI;AAAA,QAChB,GAAG,SAAS,KAAK,CAAA;AAAA,QACjB,GAAG,QAAA;AAAA,QACH,OAAA,EAAA,iBAAS,IAAI,IAAA,EAAK,EAAE,WAAA;AAAY,OAClC;AAAA,IACF,CAAA,MAAO;AACL,MAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,IACvC;AAAA,EACF,CAAA,MAAO;AAEL,IAAA,MAAM,OAAA,GAAU;AAAA,MACd,GAAG,QAAA;AAAA,MACH,IAAI,UAAA,EAAW;AAAA;AAAA,MACf,OAAA,EAAA,iBAAS,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,MAChC,OAAA,EAAA,iBAAS,IAAI,IAAA,EAAK,EAAE,WAAA;AAAY,KAClC;AACA,IAAA,QAAA,CAAS,QAAQ,OAAO,CAAA;AAAA,EAC1B;AAEA,EAAA,MAAM,UAAU,QAAQ,CAAA;AACxB,EAAA,OAAO,IAAA;AACT;AAGA,eAAsB,WAAW,EAAA,EAAI;AACnC,EAAA,MAAM,QAAA,GAAW,MAAM,QAAA,EAAS;AAChC,EAAA,MAAM,WAAW,QAAA,CAAS,MAAA,CAAO,CAAA,CAAA,KAAK,CAAA,CAAE,OAAO,EAAE,CAAA;AACjD,EAAA,MAAM,UAAU,QAAQ,CAAA;AACxB,EAAA,OAAO,IAAA;AACT;;;;"}

View File

@@ -3,9 +3,9 @@ const styles = {
"node_modules/nuxt/dist/app/components/error-404.vue": () => import('./error-404-styles.BsF5Lbhq.mjs').then(interopDefault),
"node_modules/nuxt/dist/app/components/error-500.vue": () => import('./error-500-styles.Dccc6iq5.mjs').then(interopDefault),
"components/Hero.vue": () => import('./Hero-styles.DnxJI8Rq.mjs').then(interopDefault),
"components/Hero.vue?vue&type=style&index=0&scoped=33d25311&lang.css": () => import('./Hero-styles.DnxJI8Rq.mjs').then(interopDefault),
"node_modules/nuxt/dist/app/components/error-404.vue?vue&type=style&index=0&scoped=b728498f&lang.css": () => import('./error-404-styles.BsF5Lbhq.mjs').then(interopDefault),
"node_modules/nuxt/dist/app/components/error-500.vue?vue&type=style&index=0&scoped=70d84538&lang.css": () => import('./error-500-styles.Dccc6iq5.mjs').then(interopDefault),
"components/Hero.vue?vue&type=style&index=0&scoped=33d25311&lang.css": () => import('./Hero-styles.DnxJI8Rq.mjs').then(interopDefault)
"node_modules/nuxt/dist/app/components/error-500.vue?vue&type=style&index=0&scoped=70d84538&lang.css": () => import('./error-500-styles.Dccc6iq5.mjs').then(interopDefault)
};
export { styles as default };

View File

@@ -4293,7 +4293,7 @@ function _expandFromEnv(value) {
const _inlineRuntimeConfig = {
"app": {
"baseURL": "/",
"buildId": "7c522edc-1fe9-4329-82a6-fb4c52573799",
"buildId": "87a74d40-a4d3-4127-9775-3a14a30de796",
"buildAssetsDir": "/_nuxt/",
"cdnURL": ""
},
@@ -4738,537 +4738,537 @@ const plugins = [
];
const assets = {
"/documents/Tischtennisregeln light.pdf": {
"type": "application/pdf",
"etag": "\"5177b-y/88q2+Y3RRechJMqWhse21KRdQ\"",
"mtime": "2025-10-21T13:21:50.428Z",
"size": 333691,
"path": "../public/documents/Tischtennisregeln light.pdf"
},
"/documents/satzung.pdf": {
"type": "application/pdf",
"etag": "\"5c7cf-L0A3nT8D24T9sD57FFbij3QRpzw\"",
"mtime": "2025-10-21T13:21:50.428Z",
"size": 378831,
"path": "../public/documents/satzung.pdf"
},
"/data/mannschaften.csv": {
"type": "text/csv; charset=utf-8",
"etag": "\"858-l94GKn8Q0I5RQnhrM0ZPJsYUmcw\"",
"mtime": "2025-10-21T13:21:50.428Z",
"mtime": "2025-10-21T13:25:00.011Z",
"size": 2136,
"path": "../public/data/mannschaften.csv"
},
"/data/spielsysteme.csv": {
"type": "text/csv; charset=utf-8",
"etag": "\"9bc-4npLrNHYClsD0TKV5vSifxitfV0\"",
"mtime": "2025-10-21T13:21:50.428Z",
"mtime": "2025-10-21T13:25:00.011Z",
"size": 2492,
"path": "../public/data/spielsysteme.csv"
},
"/data/termine.csv": {
"type": "text/csv; charset=utf-8",
"etag": "\"2e8-sZtaHF6QRmOQHinTWOLAYRgo6xk\"",
"mtime": "2025-10-21T13:21:50.428Z",
"mtime": "2025-10-21T13:25:00.011Z",
"size": 744,
"path": "../public/data/termine.csv"
},
"/data/vereinsmeisterschaften.csv": {
"type": "text/csv; charset=utf-8",
"etag": "\"989-X8AB+Zegy2xUbjDtbQcXhuuyBDQ\"",
"mtime": "2025-10-21T13:21:50.428Z",
"mtime": "2025-10-21T13:25:00.011Z",
"size": 2441,
"path": "../public/data/vereinsmeisterschaften.csv"
},
"/documents/Tischtennisregeln light.pdf": {
"type": "application/pdf",
"etag": "\"5177b-y/88q2+Y3RRechJMqWhse21KRdQ\"",
"mtime": "2025-10-21T13:25:00.011Z",
"size": 333691,
"path": "../public/documents/Tischtennisregeln light.pdf"
},
"/documents/satzung.pdf": {
"type": "application/pdf",
"etag": "\"5c7cf-L0A3nT8D24T9sD57FFbij3QRpzw\"",
"mtime": "2025-10-21T13:25:00.011Z",
"size": 378831,
"path": "../public/documents/satzung.pdf"
},
"/images/club_about_us.png": {
"type": "image/png",
"etag": "\"202e56-s4fLsHEgoAgKJeBRuI1qxPmqHV0\"",
"mtime": "2025-10-21T13:21:50.428Z",
"mtime": "2025-10-21T13:25:00.011Z",
"size": 2109014,
"path": "../public/images/club_about_us.png"
},
"/spielplaene/1. Mannschaft 20252026.pdf": {
"type": "application/pdf",
"etag": "\"64c6-+477M+gD/spwpWR9NO/tMJ/inCc\"",
"mtime": "2025-10-21T13:21:50.428Z",
"mtime": "2025-10-21T13:25:00.011Z",
"size": 25798,
"path": "../public/spielplaene/1. Mannschaft 20252026.pdf"
},
"/spielplaene/2. Mannschaft 20252026.pdf": {
"type": "application/pdf",
"etag": "\"5bfa-DRJMHLV15iss67lEISoGqSYmZjE\"",
"mtime": "2025-10-21T13:21:50.428Z",
"mtime": "2025-10-21T13:25:00.011Z",
"size": 23546,
"path": "../public/spielplaene/2. Mannschaft 20252026.pdf"
},
"/spielplaene/3. Mannschaft 20252026.pdf": {
"type": "application/pdf",
"etag": "\"7447-w933CPQdXhkWJ2AZOVdY0UgJnPo\"",
"mtime": "2025-10-21T13:21:50.428Z",
"mtime": "2025-10-21T13:25:00.011Z",
"size": 29767,
"path": "../public/spielplaene/3. Mannschaft 20252026.pdf"
},
"/spielplaene/4. Mannschaft 20252026.pdf": {
"type": "application/pdf",
"etag": "\"6a9b-4TPGn1yQlFUMRj7oB43SN//Np9o\"",
"mtime": "2025-10-21T13:21:50.428Z",
"mtime": "2025-10-21T13:25:00.011Z",
"size": 27291,
"path": "../public/spielplaene/4. Mannschaft 20252026.pdf"
},
"/spielplaene/5. Mannschaft 20252026.pdf": {
"type": "application/pdf",
"etag": "\"6523-5VUfCMaoiNhcwHhptHHTVJ3lSwQ\"",
"mtime": "2025-10-21T13:21:50.428Z",
"mtime": "2025-10-21T13:25:00.011Z",
"size": 25891,
"path": "../public/spielplaene/5. Mannschaft 20252026.pdf"
},
"/spielplaene/Jugend 11 20252026.pdf": {
"type": "application/pdf",
"etag": "\"52e9-3Rrk9UKUxPh80pBJ0w9oLVbe5dA\"",
"mtime": "2025-10-21T13:21:50.428Z",
"mtime": "2025-10-21T13:25:00.011Z",
"size": 21225,
"path": "../public/spielplaene/Jugend 11 20252026.pdf"
},
"/_nuxt/0xufrPn-.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"b10-/isfm3dyRIVsEjgvcmL/XPZzoKo\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 2832,
"path": "../public/_nuxt/0xufrPn-.js"
},
"/_nuxt/48ve60fm.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"557-e04q6bcr4Wja5BTiX/uCY9jcaOk\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 1367,
"path": "../public/_nuxt/48ve60fm.js"
},
"/_nuxt/B-ZRDHEi.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1744-1NcVDhC8iP9qzUGuLES4GLUFuNU\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 5956,
"path": "../public/_nuxt/B-ZRDHEi.js"
},
"/_nuxt/B4mSF5Ac.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"185-hHs3mU4qOcQAkGQaPrUYGaG0yao\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 389,
"path": "../public/_nuxt/B4mSF5Ac.js"
},
"/_nuxt/B8JkES4d.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1860-WvKC8RdCe6cXCpB1GzY85pS096Q\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 6240,
"path": "../public/_nuxt/B8JkES4d.js"
},
"/_nuxt/BFjcARf_.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"3458-KO3BlUYxGT9fa8/o5m7cBoNuldE\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 13400,
"path": "../public/_nuxt/BFjcARf_.js"
},
"/_nuxt/BJFIhPLo.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"16e9-yq0/LFZyeArARUVXQVCw9WWyEhs\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 5865,
"path": "../public/_nuxt/BJFIhPLo.js"
},
"/_nuxt/BLJfiAQ_.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1827-YlPmbtoIQqGYplyNk7VayRftNJ4\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 6183,
"path": "../public/_nuxt/BLJfiAQ_.js"
},
"/_nuxt/BQ1JAN-t.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"4d4-D2c9LzMtu3t/oTdiDqO210OhOq0\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 1236,
"path": "../public/_nuxt/BQ1JAN-t.js"
},
"/_nuxt/BTRcaDI_.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"e71-89mfqDG6lXCsNo8iythpikNOsNM\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 3697,
"path": "../public/_nuxt/BTRcaDI_.js"
},
"/_nuxt/BVRiFo7f.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"dbf-bs5Lp4co8JtdiCR4NBZg2xEEpZE\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 3519,
"path": "../public/_nuxt/BVRiFo7f.js"
},
"/_nuxt/BWWcyQAZ.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"685-pCeqOgBg8QXGBjOkvDQ5Miivcwk\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 1669,
"path": "../public/_nuxt/BWWcyQAZ.js"
},
"/_nuxt/Be7mAYpw.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"13f6-nhcH7PpHXr9KCHrhZOBaqzyCANs\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 5110,
"path": "../public/_nuxt/Be7mAYpw.js"
},
"/_nuxt/BkTrhdjg.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"81f-bXeZaccLlH7cSuSEhEG6Pk4vEzY\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 2079,
"path": "../public/_nuxt/BkTrhdjg.js"
},
"/_nuxt/BneZCqgq.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1a9f-Hr2fThSa8cJCoHMhFwvPAqgbLZg\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 6815,
"path": "../public/_nuxt/BneZCqgq.js"
},
"/_nuxt/BpG5pLwY.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"16e6-iqlwalhSHX6bpWAAiam6nLgiuVE\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 5862,
"path": "../public/_nuxt/BpG5pLwY.js"
},
"/_nuxt/BteKZQ9T.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1ea-kmrGdt5SPmt15EiBI7kR9gXMQM0\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 490,
"path": "../public/_nuxt/BteKZQ9T.js"
},
"/_nuxt/C0jrEzGC.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"5f0-uJRUZKhjlZl/nyiPAoO6Z/4LAHg\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 1520,
"path": "../public/_nuxt/C0jrEzGC.js"
},
"/_nuxt/C5SyyWEb.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"2a5-06iX+CL3i0ysaqW9nu7Eg2YzDhQ\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 677,
"path": "../public/_nuxt/C5SyyWEb.js"
},
"/_nuxt/C8kQt0fa.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"197-7X99z1xphxry8OnMwU7Ofs/uE0Q\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 407,
"path": "../public/_nuxt/C8kQt0fa.js"
},
"/_nuxt/CGpRzXRB.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"37d-FnxQohNMb8l0n0XcPv+1bmf1WCE\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 893,
"path": "../public/_nuxt/CGpRzXRB.js"
},
"/_nuxt/CHQH_CwJ.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1168-mBOIwVjM5LsxIx13Cs7oT3+LJ+k\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 4456,
"path": "../public/_nuxt/CHQH_CwJ.js"
},
"/_nuxt/CKjxMu8n.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"faa-TEO7v2i4TXlLpDUt7LGSNlcm+Ew\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 4010,
"path": "../public/_nuxt/CKjxMu8n.js"
},
"/_nuxt/CN7ivzv2.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1daf-KIlbDOIuT3G/zezUF5LO1f52Vtc\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"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-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 4583,
"path": "../public/_nuxt/CNvcEwxd.js"
},
"/_nuxt/CUVZhO0q.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"dfc-1G2To51pfChtkPrr4l+DG3FkOHk\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 3580,
"path": "../public/_nuxt/CUVZhO0q.js"
},
"/_nuxt/CUq_0rkE.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"12d-JV4KW1fgT85/V3Ap13X4q2h9U3g\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.007Z",
"size": 301,
"path": "../public/_nuxt/CUq_0rkE.js"
},
"/_nuxt/CWEkTB1z.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"198-ej4DRqc3/5nSwWU3c6wbOD3Ib9w\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 408,
"path": "../public/_nuxt/CWEkTB1z.js"
},
"/_nuxt/Cb5SbJ0y.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1d90-K3fsAPMrslrofiGV21WL0Fu94+E\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 7568,
"path": "../public/_nuxt/Cb5SbJ0y.js"
},
"/_nuxt/CkzaQq3X.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"17d-+xKrHjeww4bpFFkkjUNLD/ebn5A\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 381,
"path": "../public/_nuxt/CkzaQq3X.js"
},
"/_nuxt/ClE1fqPv.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1906-eHa+bzUC8fs+OQ3D6PnBTazlRfc\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 6406,
"path": "../public/_nuxt/ClE1fqPv.js"
},
"/_nuxt/CrCcIvVp.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"274-9U7hEMtgHqdnQopnKeJsBKqKyKw\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 628,
"path": "../public/_nuxt/CrCcIvVp.js"
},
"/_nuxt/Cx4UcKGu.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"19d-5AMD0EnFEjOkM3qKDpC/NZZzwDI\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.008Z",
"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-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 357,
"path": "../public/_nuxt/Czdc6-TI.js"
},
"/_nuxt/D54FZQPM.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1556-GtYLKNALVpyOhSr1LrAIs5gIV7I\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 5462,
"path": "../public/_nuxt/D54FZQPM.js"
},
"/_nuxt/DAACT36i.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1f9-dVOk5jAwb0VlMLJevIcT+s2NTgM\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 505,
"path": "../public/_nuxt/DAACT36i.js"
},
"/_nuxt/DIYnFFZd.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"3518-Z2dO9ejuo/PHmRggMKxl1caQ7yo\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 13592,
"path": "../public/_nuxt/DIYnFFZd.js"
},
"/_nuxt/DK8ar2Vw.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"bf0-gt2eLpxqF9V/T1JrusLBdWlTOB4\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 3056,
"path": "../public/_nuxt/DK8ar2Vw.js"
},
"/_nuxt/DQ89_Lrx.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1bdb-FX6FWYmVTmAWWkO9E2O91ImJoTI\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.008Z",
"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-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 287,
"path": "../public/_nuxt/DaSgy0Cl.js"
},
"/_nuxt/DaUHoOti.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"177f-xSuV2n3wrsWDBysy5o9XsakrXDw\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 6015,
"path": "../public/_nuxt/DaUHoOti.js"
},
"/_nuxt/DkeYb0_S.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1ce-xiaAbRvqQ+zffTXF3Gc7rq14R0U\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 462,
"path": "../public/_nuxt/DkeYb0_S.js"
},
"/_nuxt/DlAUqK2U.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"5b-eFCz/UrraTh721pgAl0VxBNR1es\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 91,
"path": "../public/_nuxt/DlAUqK2U.js"
},
"/_nuxt/DuCL6zMI.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"16a2-gJGadr4jKYMWO0Im01z6CSn+n1E\"",
"mtime": "2025-10-21T13:21:50.424Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 5794,
"path": "../public/_nuxt/DuCL6zMI.js"
},
"/_nuxt/H0vOWBHN.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"2029-KNpFGDGtz8iRFY43F+s7ByzEpkM\"",
"mtime": "2025-10-21T13:21:50.425Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 8233,
"path": "../public/_nuxt/H0vOWBHN.js"
},
"/_nuxt/Harheimer TC.CKfYAfp1.svg": {
"type": "image/svg+xml",
"etag": "\"1d2535-Tx2lTuuFn2hBqGZOnDan3/OdRU0\"",
"mtime": "2025-10-21T13:21:50.425Z",
"mtime": "2025-10-21T13:25:00.008Z",
"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-21T13:21:50.425Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 319,
"path": "../public/_nuxt/Qy3ajxTk.js"
},
"/_nuxt/RGsuuLA3.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"10bb-640PtonCPMgqRn3wO6U3UtHYmDM\"",
"mtime": "2025-10-21T13:21:50.425Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 4283,
"path": "../public/_nuxt/RGsuuLA3.js"
},
"/_nuxt/SRZHqrjk.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"383-+7H4gpbdqNaMFlhjcQOVxgmex04\"",
"mtime": "2025-10-21T13:21:50.425Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 899,
"path": "../public/_nuxt/SRZHqrjk.js"
},
"/_nuxt/XZ6RV9KH.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"175-xr1poEaGS4yjOp907AsRAr6XHLI\"",
"mtime": "2025-10-21T13:21:50.425Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 373,
"path": "../public/_nuxt/XZ6RV9KH.js"
},
"/_nuxt/YJHbYJtA.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"19f-nQw578pUen9o8yYaMA8Bwag6xho\"",
"mtime": "2025-10-21T13:21:50.425Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 415,
"path": "../public/_nuxt/YJHbYJtA.js"
},
"/_nuxt/ZrOCUSmD.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"ee2-knvq//8tl4tcmRjFy6nWAy0dRBk\"",
"mtime": "2025-10-21T13:21:50.425Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 3810,
"path": "../public/_nuxt/ZrOCUSmD.js"
},
"/_nuxt/entry.DJXn10xo.css": {
"type": "text/css; charset=utf-8",
"etag": "\"b4f9-aegHiysPkslqXqaLCqt8DoC1o0c\"",
"mtime": "2025-10-21T13:21:50.425Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 46329,
"path": "../public/_nuxt/entry.DJXn10xo.css"
},
"/_nuxt/error-404.CbXQcqJW.css": {
"type": "text/css; charset=utf-8",
"etag": "\"97e-Ty5bTTSEudJkO/DsGUoIf37xYxc\"",
"mtime": "2025-10-21T13:21:50.425Z",
"mtime": "2025-10-21T13:25:00.008Z",
"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-21T13:21:50.425Z",
"mtime": "2025-10-21T13:25:00.008Z",
"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-21T13:21:50.425Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 359,
"path": "../public/_nuxt/index.BYYJS8tV.css"
},
"/_nuxt/jVj3QaoK.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"196-xWXv220Sy3kJeouwzrQ/gnXllWQ\"",
"mtime": "2025-10-21T13:21:50.425Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 406,
"path": "../public/_nuxt/jVj3QaoK.js"
},
"/_nuxt/rZgF5GAr.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"2163-F4ycM3bgzLo6kVIU09LeGUWE8SI\"",
"mtime": "2025-10-21T13:21:50.425Z",
"mtime": "2025-10-21T13:25:00.008Z",
"size": 8547,
"path": "../public/_nuxt/rZgF5GAr.js"
},
"/_nuxt/tnJjxGC6.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"abb-4G3/6bCNUQzUVLLE5tcXv6Rh+gc\"",
"mtime": "2025-10-21T13:21:50.425Z",
"mtime": "2025-10-21T13:25:00.009Z",
"size": 2747,
"path": "../public/_nuxt/tnJjxGC6.js"
},
"/_nuxt/u6EV0gxL.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"329c9-1LcMOM+qcTldBs3dBt98LZgOe5g\"",
"mtime": "2025-10-21T13:21:50.425Z",
"mtime": "2025-10-21T13:25:00.009Z",
"size": 207305,
"path": "../public/_nuxt/u6EV0gxL.js"
},
"/_nuxt/y9BE7jdd.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"d8b-/UzKIx4Kl1VnbQibGZzrIbVIyG4\"",
"mtime": "2025-10-21T13:21:50.425Z",
"mtime": "2025-10-21T13:25:00.009Z",
"size": 3467,
"path": "../public/_nuxt/y9BE7jdd.js"
},
"/_nuxt/builds/latest.json": {
"type": "application/json",
"etag": "\"47-e8kfnwYYNI3pfAvoR4mN2hc+exs\"",
"mtime": "2025-10-21T13:21:50.416Z",
"etag": "\"47-LLc545BHt0FUmKpwRquEBrYqcEw\"",
"mtime": "2025-10-21T13:25:00.001Z",
"size": 71,
"path": "../public/_nuxt/builds/latest.json"
},
"/_nuxt/builds/meta/7c522edc-1fe9-4329-82a6-fb4c52573799.json": {
"/_nuxt/builds/meta/87a74d40-a4d3-4127-9775-3a14a30de796.json": {
"type": "application/json",
"etag": "\"8b-z4N/N6jU77K1t+za7hhzV6Z5W6g\"",
"mtime": "2025-10-21T13:21:50.415Z",
"etag": "\"8b-NehDhmrdFrxSLV/VhZ0ZLTfzYfc\"",
"mtime": "2025-10-21T13:24:59.998Z",
"size": 139,
"path": "../public/_nuxt/builds/meta/7c522edc-1fe9-4329-82a6-fb4c52573799.json"
"path": "../public/_nuxt/builds/meta/87a74d40-a4d3-4127-9775-3a14a30de796.json"
}
};

View File

@@ -13,6 +13,7 @@ import 'bcryptjs';
import 'jsonwebtoken';
import 'fs';
import 'path';
import 'crypto';
const members_delete = defineEventHandler(async (event) => {
try {

View File

@@ -1 +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;;;;"}
{"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;;;;"}

View File

@@ -13,6 +13,7 @@ import 'bcryptjs';
import 'jsonwebtoken';
import 'fs';
import 'path';
import 'crypto';
const members_get = defineEventHandler(async (event) => {
var _a, _b, _c;

View File

@@ -1 +1 @@
{"version":3,"file":"members.get.mjs","sources":["../../../../../server/api/members.get.js"],"sourcesContent":null,"names":["_a"],"mappings":"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"}
{"version":3,"file":"members.get.mjs","sources":["../../../../../server/api/members.get.js"],"sourcesContent":null,"names":["_a"],"mappings":"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"}

View File

@@ -13,6 +13,7 @@ import 'bcryptjs';
import 'jsonwebtoken';
import 'fs';
import 'path';
import 'crypto';
const members_post = defineEventHandler(async (event) => {
try {

View File

@@ -1 +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,IAAA,SAAA,EAAA,QAAA,EAAA,OAAA,KAAA,EAAA,OAAA,EAAA,OAAA,GAAA,IAAA;AAEA,IAAA,IAAA,CAAA,SAAA,IAAA,CAAA,QAAA,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,SAAA;AAAA,MACA,QAAA;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;;;;"}
{"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,IAAA,SAAA,EAAA,QAAA,EAAA,OAAA,KAAA,EAAA,OAAA,EAAA,OAAA,GAAA,IAAA;AAEA,IAAA,IAAA,CAAA,SAAA,IAAA,CAAA,QAAA,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,SAAA;AAAA,MACA,QAAA;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;;;;"}

View File

@@ -13,6 +13,7 @@ import 'bcryptjs';
import 'jsonwebtoken';
import 'fs';
import 'path';
import 'crypto';
const news_delete = defineEventHandler(async (event) => {
try {

View File

@@ -1 +1 @@
{"version":3,"file":"news.delete.mjs","sources":["../../../../../server/api/news.delete.js"],"sourcesContent":null,"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA,oBAAA,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;AAGA,IAAA,MAAA,KAAA,GAAA,SAAA,KAAA,CAAA;AACA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA;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,WAAA,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,oCAAA,KAAA,CAAA;AACA,IAAA,MAAA,KAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
{"version":3,"file":"news.delete.mjs","sources":["../../../../../server/api/news.delete.js"],"sourcesContent":null,"names":[],"mappings":";;;;;;;;;;;;;;;;;AAGA,oBAAA,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;AAGA,IAAA,MAAA,KAAA,GAAA,SAAA,KAAA,CAAA;AACA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA;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,WAAA,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,oCAAA,KAAA,CAAA;AACA,IAAA,MAAA,KAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}

View File

@@ -13,6 +13,7 @@ import 'bcryptjs';
import 'jsonwebtoken';
import 'fs';
import 'path';
import 'crypto';
const news_get = defineEventHandler(async (event) => {
try {

View File

@@ -1 +1 @@
{"version":3,"file":"news.get.mjs","sources":["../../../../../server/api/news.get.js"],"sourcesContent":null,"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA,iBAAA,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,QAAA,EAAA;AAGA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,KAAA,IAAA,IAAA,CAAA,CAAA,CAAA,OAAA,CAAA,GAAA,IAAA,IAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA;AAEA,IAAA,OAAA;AAAA,MACA,OAAA,EAAA,IAAA;AAAA,MACA;AAAA,KACA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,OAAA,CAAA,KAAA,CAAA,iCAAA,KAAA,CAAA;AACA,IAAA,MAAA,KAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
{"version":3,"file":"news.get.mjs","sources":["../../../../../server/api/news.get.js"],"sourcesContent":null,"names":[],"mappings":";;;;;;;;;;;;;;;;;AAGA,iBAAA,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,QAAA,EAAA;AAGA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,KAAA,IAAA,IAAA,CAAA,CAAA,CAAA,OAAA,CAAA,GAAA,IAAA,IAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA;AAEA,IAAA,OAAA;AAAA,MACA,OAAA,EAAA,IAAA;AAAA,MACA;AAAA,KACA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,OAAA,CAAA,KAAA,CAAA,iCAAA,KAAA,CAAA;AACA,IAAA,MAAA,KAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}

View File

@@ -13,6 +13,7 @@ import 'bcryptjs';
import 'jsonwebtoken';
import 'fs';
import 'path';
import 'crypto';
const news_post = defineEventHandler(async (event) => {
try {

View File

@@ -1 +1 @@
{"version":3,"file":"news.post.mjs","sources":["../../../../../server/api/news.post.js"],"sourcesContent":null,"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA,kBAAA,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,KAAA,EAAA,OAAA,EAAA,GAAA,IAAA;AAEA,IAAA,IAAA,CAAA,KAAA,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,QAAA,CAAA;AAAA,MACA,IAAA,EAAA,IAAA,KAAA,CAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA,IAAA,CAAA;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,mCAAA,KAAA,CAAA;AACA,IAAA,MAAA,KAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
{"version":3,"file":"news.post.mjs","sources":["../../../../../server/api/news.post.js"],"sourcesContent":null,"names":[],"mappings":";;;;;;;;;;;;;;;;;AAGA,kBAAA,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,KAAA,EAAA,OAAA,EAAA,GAAA,IAAA;AAEA,IAAA,IAAA,CAAA,KAAA,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,QAAA,CAAA;AAAA,MACA,IAAA,EAAA,IAAA,KAAA,CAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA,IAAA,CAAA;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,mCAAA,KAAA,CAAA;AACA,IAAA,MAAA,KAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}

76
components/PublicNews.vue Normal file
View File

@@ -0,0 +1,76 @@
<template>
<section v-if="news.length > 0" class="py-16 sm:py-20 bg-white">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="text-center mb-16">
<h2 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-4">
Aktuelles
</h2>
<div class="w-24 h-1 bg-primary-600 mx-auto mb-6" />
<p class="text-xl text-gray-600 max-w-3xl mx-auto">
Die neuesten Nachrichten aus unserem Verein
</p>
</div>
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-8">
<article
v-for="item in news"
:key="item.id"
class="bg-gray-50 rounded-xl p-6 border border-gray-200 hover:shadow-lg transition-shadow"
>
<div class="flex items-center text-sm text-gray-500 mb-3">
<Calendar :size="16" class="mr-2" />
{{ formatDate(item.created) }}
</div>
<h3 class="text-xl font-display font-bold text-gray-900 mb-3">
{{ item.title }}
</h3>
<p class="text-gray-700 line-clamp-3">
{{ item.content }}
</p>
</article>
</div>
</div>
</section>
</template>
<script setup>
import { ref, onMounted } from 'vue'
import { Calendar } from 'lucide-vue-next'
const news = ref([])
const loadNews = async () => {
try {
const response = await $fetch('/api/news-public')
news.value = response.news
} catch (error) {
console.error('Fehler beim Laden der öffentlichen News:', error)
}
}
const formatDate = (dateString) => {
if (!dateString) return ''
const date = new Date(dateString)
return date.toLocaleDateString('de-DE', {
year: 'numeric',
month: 'long',
day: 'numeric'
})
}
onMounted(() => {
loadNews()
})
</script>
<style scoped>
.line-clamp-3 {
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden;
}
</style>

View File

@@ -1,9 +1,11 @@
<template>
<div class="min-h-full">
<Hero />
<PublicNews />
</div>
</template>
<script setup>
import Hero from '~/components/Hero.vue'
import PublicNews from '~/components/PublicNews.vue'
</script>

View File

@@ -32,9 +32,18 @@
>
<div class="flex justify-between items-start mb-4">
<div class="flex-1">
<h2 class="text-2xl font-display font-bold text-gray-900 mb-2">
{{ item.title }}
</h2>
<div class="flex items-center space-x-3 mb-2">
<h2 class="text-2xl font-display font-bold text-gray-900">
{{ item.title }}
</h2>
<span
v-if="item.isPublic"
class="px-3 py-1 bg-blue-100 text-blue-800 text-xs font-semibold rounded-full flex items-center"
>
<Globe :size="14" class="mr-1" />
Öffentlich
</span>
</div>
<div class="flex items-center text-sm text-gray-500 space-x-4">
<div class="flex items-center">
<User :size="16" class="mr-1" />
@@ -117,6 +126,25 @@
/>
</div>
<div class="flex items-center space-x-3 p-4 bg-blue-50 rounded-lg border border-blue-200">
<input
id="isPublic"
v-model="formData.isPublic"
type="checkbox"
class="w-5 h-5 text-primary-600 border-gray-300 rounded focus:ring-primary-500"
:disabled="isSaving"
/>
<label for="isPublic" class="text-sm font-medium text-gray-900 cursor-pointer flex-1">
<div class="flex items-center">
<Globe :size="18" class="mr-2 text-blue-600" />
<span>Öffentliche News (auf Startseite anzeigen)</span>
</div>
<p class="text-xs text-gray-600 mt-1 ml-6">
Wenn aktiviert, wird diese News auch für nicht angemeldete Besucher auf der Startseite sichtbar.
</p>
</label>
</div>
<div v-if="errorMessage" class="flex items-center p-3 rounded-md bg-red-50 text-red-700 text-sm">
<AlertCircle :size="20" class="mr-2" />
{{ errorMessage }}
@@ -149,7 +177,7 @@
<script setup>
import { ref, computed, onMounted } from 'vue'
import { Newspaper, Plus, User, Calendar, Edit, Trash2, Loader2, AlertCircle } from 'lucide-vue-next'
import { Newspaper, Plus, User, Calendar, Edit, Trash2, Loader2, AlertCircle, Globe } from 'lucide-vue-next'
const authStore = useAuthStore()
@@ -162,7 +190,8 @@ const errorMessage = ref('')
const formData = ref({
title: '',
content: ''
content: '',
isPublic: false
})
const canWrite = computed(() => {
@@ -185,7 +214,8 @@ const openAddModal = () => {
editingNews.value = null
formData.value = {
title: '',
content: ''
content: '',
isPublic: false
}
showModal.value = true
errorMessage.value = ''
@@ -195,7 +225,8 @@ const openEditModal = (item) => {
editingNews.value = item
formData.value = {
title: item.title,
content: item.content
content: item.content,
isPublic: item.isPublic || false
}
showModal.value = true
errorMessage.value = ''

View File

@@ -0,0 +1,25 @@
import { readNews } from '../utils/news.js'
export default defineEventHandler(async (event) => {
try {
const allNews = await readNews()
// Filter only public news
const publicNews = allNews.filter(item => item.isPublic === true)
// Sort by created date, newest first
publicNews.sort((a, b) => new Date(b.created) - new Date(a.created))
// Limit to latest 3 for homepage
const latestNews = publicNews.slice(0, 3)
return {
success: true,
news: latestNews
}
} catch (error) {
console.error('Fehler beim Abrufen der öffentlichen News:', error)
throw error
}
})

View File

@@ -1,18 +1,20 @@
[
{
"id": "660e8400-e29b-41d4-a716-446655440001",
"title": "Alles neu",
"content": "Die seite ist brandneu",
"author": "Admin",
"created": "2025-10-21T12:49:29.710Z",
"updated": "2025-10-21T12:49:29.710Z"
},
{
"id": "660e8400-e29b-41d4-a716-446655440002",
"title": "Willkommen im Mitgliederbereich",
"content": "Hier finden Sie ab sofort alle internen Neuigkeiten und Ankündigungen des Harheimer TC.",
"author": "Vorstand",
"isPublic": false,
"created": "2025-01-15T10:00:00.000Z",
"updated": "2025-01-15T10:00:00.000Z"
},
{
"id": "660e8400-e29b-41d4-a716-446655440003",
"title": "Erfolgreicher Saisonstart 2025/26",
"content": "Mit fünf Herrenmannschaften starten wir erfolgreich in die neue Saison. Wir freuen uns auf spannende Spiele!",
"author": "Vorstand",
"isPublic": true,
"created": "2025-01-20T10:00:00.000Z",
"updated": "2025-01-20T10:00:00.000Z"
}
]

View File

@@ -69,6 +69,7 @@ export async function saveNews(newsData) {
const newItem = {
...newsData,
id: randomUUID(), // Cryptographically secure unique ID
isPublic: newsData.isPublic || false, // Default to internal
created: new Date().toISOString(),
updated: new Date().toISOString()
}