Fügt die Funktionalität zur Aktualisierung der Vereinseinstellungen hinzu. Implementiert die Methode updateClubSettings im clubsController, um Begrüßungstexte und Mitgliedsnummern zu aktualisieren. Aktualisiert das Club-Modell, um neue Felder für greetingText und associationMemberNumber zu unterstützen. Ergänzt die Routen in clubRoutes, um die neuen Einstellungen zu verarbeiten. Fügt eine neue Ansicht für die Vereins-Einstellungen im Frontend hinzu und aktualisiert die Navigation entsprechend.

This commit is contained in:
Torsten Schulz (local)
2025-10-03 19:49:19 +02:00
parent 4b1a046149
commit ac727c6c5b
12 changed files with 1144 additions and 48 deletions

View File

@@ -1,11 +1,12 @@
import express from 'express';
import { authenticate } from '../middleware/authMiddleware.js';
import { getClubs, addClub, getClub, requestClubAccess, getPendingApprovals, approveClubAccess, rejectClubAccess } from '../controllers/clubsController.js';
import { getClubs, addClub, getClub, requestClubAccess, getPendingApprovals, approveClubAccess, rejectClubAccess, updateClubSettings } from '../controllers/clubsController.js';
const router = express.Router();
router.get('/', authenticate, getClubs);
router.post('/', authenticate, addClub);
router.put('/:clubid/settings', authenticate, updateClubSettings);
router.get('/:clubid', authenticate, getClub);
router.get('/request/:clubid', authenticate, requestClubAccess);
router.get('/pending/:clubid', authenticate, getPendingApprovals);

View File

@@ -31,7 +31,6 @@ function formatCookies(cookies) {
// Meeting-Info API-Endpunkt
router.get('/meetinginfo/:code', async (req, res) => {
const { code } = req.params;
console.log(`📊 Meeting-Info API für Code: ${code}`);
try {
// Hole Cookies für diesen Code (falls vorhanden)
@@ -65,7 +64,6 @@ router.get('/meetinginfo/:code', async (req, res) => {
const newCookies = extractCookies(response.headers.raw()['set-cookie']);
if (Object.keys(newCookies).length > 0) {
cookieStore.set(code, { ...cookies, ...newCookies });
console.log(`🍪 Cookies für Code ${code} gespeichert:`, Object.keys(newCookies));
}
// CORS-Header setzen
@@ -78,7 +76,6 @@ router.get('/meetinginfo/:code', async (req, res) => {
});
res.json(data);
console.log(`✅ Meeting-Info für Code ${code} erfolgreich abgerufen`);
} catch (error) {
console.error(`❌ Fehler beim Abrufen der Meeting-Info für Code ${code}:`, error);
@@ -92,7 +89,6 @@ router.get('/meetinginfo/:code', async (req, res) => {
// Cookie-Initialisierung (für den ersten Request)
router.post('/init-cookies/:code', async (req, res) => {
const { code } = req.params;
console.log(`🍪 Cookie-Initialisierung für Code: ${code}`);
try {
// Erster Request an die nuscore-Seite um Cookies zu erhalten
@@ -111,7 +107,6 @@ router.post('/init-cookies/:code', async (req, res) => {
const cookies = extractCookies(response.headers.raw()['set-cookie']);
if (Object.keys(cookies).length > 0) {
cookieStore.set(code, cookies);
console.log(`🍪 Cookies für Code ${code} initialisiert:`, Object.keys(cookies));
}
res.json({
@@ -132,7 +127,6 @@ router.post('/init-cookies/:code', async (req, res) => {
// Detaillierte Meeting-Daten API-Endpunkt
router.get('/meetingdetails/:uuid', async (req, res) => {
const { uuid } = req.params;
console.log(`📊 Meeting-Details API für UUID: ${uuid}`);
try {
// Hole Cookies für diesen Code (falls vorhanden)
@@ -166,7 +160,6 @@ router.get('/meetingdetails/:uuid', async (req, res) => {
const newCookies = extractCookies(response.headers.raw()['set-cookie']);
if (Object.keys(newCookies).length > 0) {
cookieStore.set(uuid, { ...cookies, ...newCookies });
console.log(`🍪 Cookies für UUID ${uuid} gespeichert:`, Object.keys(newCookies));
}
// CORS-Header setzen
@@ -179,7 +172,6 @@ router.get('/meetingdetails/:uuid', async (req, res) => {
});
res.json(data);
console.log(`✅ Meeting-Details für UUID ${uuid} erfolgreich abgerufen`);
} catch (error) {
console.error(`❌ Fehler beim Abrufen der Meeting-Details für UUID ${uuid}:`, error);