feat: improve user token handling and add club selection clearing button in settings
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s

This commit is contained in:
Torsten Schulz (local)
2026-05-15 16:52:26 +02:00
parent d955577d9a
commit 40bd5e0745
3 changed files with 119 additions and 162 deletions

View File

@@ -1,11 +1,16 @@
import fs from 'fs';
import diaryDateActivityService from '../services/diaryDateActivityService.js';
import { emitActivityChanged } from '../services/socketService.js';
import DiaryDate from '../models/DiaryDates.js';
import { devLog } from '../utils/logger.js';
import { devLog, errorLog } from '../utils/logger.js';
export const createDiaryDateActivity = async (req, res) => {
try {
const { authcode: userToken } = req.headers;
let userToken = req.headers['authcode'] || req.headers['auth-code'] || null;
const authHeader = req.headers['authorization'] || req.headers['Authorization'];
if (!userToken && authHeader && typeof authHeader === 'string' && authHeader.startsWith('Bearer ')) {
userToken = authHeader.split(' ')[1];
}
const { clubId } = req.params;
const { diaryDateId, activity, predefinedActivityId, duration, durationText, orderId, isTimeblock, groupId } = req.body;
const activityItem = await diaryDateActivityService.createActivity(userToken, clubId, {
@@ -34,7 +39,11 @@ export const createDiaryDateActivity = async (req, res) => {
export const updateDiaryDateActivity = async (req, res) => {
try {
const { authcode: userToken } = req.headers;
let userToken = req.headers['authcode'] || req.headers['auth-code'] || null;
const authHeader = req.headers['authorization'] || req.headers['Authorization'];
if (!userToken && authHeader && typeof authHeader === 'string' && authHeader.startsWith('Bearer ')) {
userToken = authHeader.split(' ')[1];
}
const { clubId, id } = req.params;
const { predefinedActivityId, customActivityName, duration, durationText, orderId, groupId } = req.body; // Add groupId
const updatedActivity = await diaryDateActivityService.updateActivity(userToken, clubId, id, {
@@ -62,7 +71,11 @@ export const updateDiaryDateActivity = async (req, res) => {
export const deleteDiaryDateActivity = async (req, res) => {
try {
const { authcode: userToken } = req.headers;
let userToken = req.headers['authcode'] || req.headers['auth-code'] || null;
const authHeader = req.headers['authorization'] || req.headers['Authorization'];
if (!userToken && authHeader && typeof authHeader === 'string' && authHeader.startsWith('Bearer ')) {
userToken = authHeader.split(' ')[1];
}
const { clubId, id } = req.params;
// Hole diaryDateId vor dem Löschen
@@ -88,7 +101,11 @@ export const deleteDiaryDateActivity = async (req, res) => {
export const updateDiaryDateActivityOrder = async (req, res) => {
try {
const { authcode: userToken } = req.headers;
let userToken = req.headers['authcode'] || req.headers['auth-code'] || null;
const authHeader = req.headers['authorization'] || req.headers['Authorization'];
if (!userToken && authHeader && typeof authHeader === 'string' && authHeader.startsWith('Bearer ')) {
userToken = authHeader.split(' ')[1];
}
const { clubId, id } = req.params;
const { orderId } = req.body;
const updatedActivity = await diaryDateActivityService.updateActivityOrder(userToken, clubId, id, orderId);
@@ -110,19 +127,35 @@ export const updateDiaryDateActivityOrder = async (req, res) => {
export const getDiaryDateActivities = async (req, res) => {
try {
const { authcode: userToken } = req.headers;
let userToken = req.headers['authcode'] || req.headers['auth-code'] || null;
const authHeader = req.headers['authorization'] || req.headers['Authorization'];
if (!userToken && authHeader && typeof authHeader === 'string' && authHeader.startsWith('Bearer ')) {
userToken = authHeader.split(' ')[1];
}
const { clubId, diaryDateId } = req.params;
const activities = await diaryDateActivityService.getActivities(userToken, clubId, diaryDateId);
res.status(200).json(activities);
} catch (error) {
// Fallback-Logging: schreibe Stacktrace in eine Datei, falls STDOUT/STDERR nicht sichtbar ist
try {
const msg = `${new Date().toISOString()} - getDiaryDateActivities error: ${error && error.stack ? error.stack : JSON.stringify(error)}\n`;
fs.appendFileSync('/tmp/diary-activity-error.log', msg);
} catch (e) {
// ignore
}
devLog(error);
errorLog(error);
res.status(500).json({ error: 'Error getting activities' });
}
}
export const addGroupActivity = async(req, res) => {
try {
const { authcode: userToken } = req.headers;
let userToken = req.headers['authcode'] || req.headers['auth-code'] || null;
const authHeader = req.headers['authorization'] || req.headers['Authorization'];
if (!userToken && authHeader && typeof authHeader === 'string' && authHeader.startsWith('Bearer ')) {
userToken = authHeader.split(' ')[1];
}
const { clubId, diaryDateId, groupId, activity, predefinedActivityId, timeblockId, duration, durationText } = req.body;
const activityItem = await diaryDateActivityService.addGroupActivity(
userToken,