Files
timemaster/frontend/DEVLOG.md
T
patrick 06bb1c1664 feat: FZA Einzelstunden + Security-Fixes (K-1–K-5, H-2–H-4, M-1/M-3/M-6)
FZA Einzelstunden:
- Absence.fza_hours (Numeric 5,2) — FZA in Stunden statt Tagen
- Migration 0032: fza_hours Spalte in absences
- AbsenceCreate/AbsenceOut Schema um fza_hours erweitert
- absence_service: _deduct/_refund_overtime nutzt fza_hours direkt wenn gesetzt
- Frontend: Tage/Stunden-Toggle im FZA-Antrag-Modal

Security K-1: Privilege Escalation via PATCH /users/{id}.role
- user_service: Whitelist für Rollenänderungen, SUPER_ADMIN nur durch SUPER_ADMIN
- Letzter COMPANY_ADMIN gegen Selbst-Demotion gesichert

Security K-2: Kiosk-IP-Whitelist hinter nginx
- kiosk_security: _get_client_ip() liest X-Real-IP statt request.client.host

Security K-3: Kiosk-PIN Brute-Force-Schutz
- kiosk_auth_service: Redis-Lockout nach 5 Fehlversuchen (15 min)

Security K-4: TOTP-Setup-Hijacking
- auth router: /totp/setup abgelehnt wenn TOTP bereits aktiv

Security K-5: Separater Fernet-Key
- config: SECRET_KEY_DATA Feld (optional, Fallback auf SECRET_KEY)
- crypto: get_fernet_key() mit Warning bei fehlendem SECRET_KEY_DATA

Security H-2: Vacation Balance nur HR/Admin
- absences router: PATCH /balance nur noch HR/COMPANY_ADMIN/SUPER_ADMIN + AuditLog

Security H-3: Rate-Limits auf /auth/refresh + /auth/logout
- auth router: 30/min auf refresh, 60/min auf logout

Security H-4: Login-Failure-Logging + Lockout
- auth_service: Redis-Counter, Lockout nach 10 Versuchen (15 min)
- AuditLog für login_success und login_failed

Security M-1: Nginx Security-Header
- nginx.conf: X-Frame-Options, X-Content-Type-Options, CSP, Referrer-Policy, X-XSS-Protection, Permissions-Policy

Security M-3: AuditLog bei Rollenänderungen
- user_service: action=role_changed mit old/new role

Security M-6: create_all nur in Development
- main.py: Base.metadata.create_all nur wenn not settings.is_production

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 11:13:42 +02:00

13 KiB
Raw Blame History

frontend Dev Log

2026-03-28 22:34 22:34 (0m)

Beschreibung: Claude Code Session Projekt: archivmail

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-03-28 22:42 23:11 (28m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-03-28 23:13 23:18 (5m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-03-28 23:18 23:19 (0m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-03-28 23:20 23:21 (0m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-03-28 23:28 23:32 (3m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-03-28 23:32 23:35 (2m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-03-28 23:37 23:38 (0m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-03-28 23:44 23:44 (0m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-03-28 23:50 23:52 (1m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-03-28 23:55 23:55 (0m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-03-28 23:56 23:58 (1m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-03-29 00:13 00:14 (1m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-03-29 00:14 00:25 (10m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-03-29 00:27 00:28 (1m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-03-29 00:29 00:29 (0m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-04-06 23:38 23:43 (5m)

Beschreibung: Claude Code Session Projekt: timemaster

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-04-06 23:44 23:44 (0m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-05-05 19:54 22:28 (2h 33m)

Beschreibung: Claude Code Session Projekt: timemaster

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-05-06 10:25 10:27 (2m)

Beschreibung: Claude Code Session Projekt: timemaster

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-05-06 10:28 10:29 (1m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-05-06 10:35 10:37 (1m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-05-06 10:39 10:41 (1m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-05-06 11:20 11:21 (0m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-05-06 12:47 12:47 (0m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-05-06 12:47 15:57 (3h 09m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-05-06 15:58 16:00 (2m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-05-06 23:13 23:16 (2m)

Beschreibung: Claude Code Session Projekt: timemaster

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-05-06 23:19 23:19 (0m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-05-06 23:25 23:25 (0m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-05-07 00:21 00:22 (1m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-05-07 00:24 00:24 (0m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-05-07 00:24 00:25 (0m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-05-07 00:27 00:27 (0m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-05-07 10:06 10:07 (0m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-05-11 22:48 22:56 (7m)

Beschreibung: Claude Code Session Projekt: timemaster

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-05-23 19:22 19:39 (17m)

Beschreibung: Claude Code Session Projekt: timemaster

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-05-23 19:56 19:58 (2m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-05-23 20:00 20:00 (0m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

Keine Änderungen ermittelbar.


2026-05-23 22:38 22:42 (3m)

Beschreibung: Claude Code Session Projekt: timemaster

Commits

Keine Commits in dieser Session.

Geänderte Dateien

  • DEVLOG.md | 16 ++
  • backend/app/routers/absences.py | 10 -
  • backend/app/routers/caldav.py | 2 -
  • backend/app/routers/kiosk.py | 3 -
  • backend/app/routers/ldap.py | 2 -
  • backend/app/routers/projects.py | 2 -
  • backend/app/routers/smtp.py | 1 -
  • backend/app/routers/time_entries.py | 10 -
  • backend/migrations/env.py | 4 -
  • .../migrations/versions/0024_row_level_security.py | 223 +++++----------------
  • backend/tests/conftest.py | 48 +++++
  • backend/tests/test_rls.py | 190 ++++++++++++++++++

2026-05-24 11:59 12:01 (2m)

Beschreibung: Claude Code Session Projekt: timemaster

Commits

  • 62ef6c2 feat: Live-Stempel-Uhr, Break-UI, Balance-Widget, Approval-Queue + PDF-Export (WeasyPrint)

Geänderte Dateien

  • DEVLOG.md | 128 +++++++
  • backend/app/routers/absence.py | 159 +++++++++
  • backend/app/routers/absence_service.py | 615 ++++++++++++++++++++++++++++++++
  • backend/requirements.txt | 1 +
  • backend/tests/test_reports.py | 44 +++
  • frontend/src/pages/TimeTrackingPage.tsx | 521 +++++++++++++++++++--------

2026-05-24 12:13 12:14 (1m)

Beschreibung: Claude Code Session Projekt: timemaster

Commits

  • 0f83d13 feat(kiosk): Stufe 2 Ed25519-Auth, CLI-Tool, neue KioskDevicesPage

Geänderte Dateien

  • DEVLOG.md | 58 ++++
  • backend/app/core/kiosk_security.py | 233 ++++++++++++++
  • backend/app/routers/kiosk.py | 119 +++++--
  • backend/app/schemas/kiosk.py | 70 ++++-
  • backend/app/services/kiosk_service.py | 138 ++++++---
  • backend/cli.py | 529 ++++++++++++++++++++++++++++++++
  • backend/requirements.txt | 2 +
  • frontend/DEVLOG.md | 16 +
  • frontend/src/components/Layout.tsx | 71 ++++-
  • frontend/src/pages/KioskDevicesPage.tsx | 412 +++++++++++++++++--------

2026-05-24 12:22 12:24 (2m)

Beschreibung: Claude Code Session Projekt: timemaster

Commits

  • 35fcea9 feat(kiosk): Stufe 3 ServiceWorker, WebCrypto Setup-Flow, Kiosk-UI, 15 Security-Tests

Geänderte Dateien

  • DEVLOG.md | 20 ++
  • backend/tests/test_kiosk_security.py | 387 ++++++++++++++++++++++++++++++++++
  • frontend/DEVLOG.md | 20 ++
  • frontend/public/kiosk-sw.js | 187 ++++++++++++++++
  • frontend/src/App.tsx | 4 +
  • frontend/src/pages/KioskSetupPage.tsx | 307 +++++++++++++++++++++++++++
  • frontend/src/pages/KioskStampPage.tsx | 348 ++++++++++++++++++++++++++++++

2026-05-24 12:26 12:28 (1m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

  • DEVLOG.md | 20 ++
  • backend/tests/test_kiosk_security.py | 387 ++++++++++++++++++++++++++++++++++
  • frontend/DEVLOG.md | 20 ++
  • frontend/public/kiosk-sw.js | 187 ++++++++++++++++
  • frontend/src/App.tsx | 4 +
  • frontend/src/pages/KioskSetupPage.tsx | 307 +++++++++++++++++++++++++++
  • frontend/src/pages/KioskStampPage.tsx | 348 ++++++++++++++++++++++++++++++

2026-05-24 12:31 12:31 (0m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

  • DEVLOG.md | 20 ++
  • backend/tests/test_kiosk_security.py | 387 ++++++++++++++++++++++++++++++++++
  • frontend/DEVLOG.md | 20 ++
  • frontend/public/kiosk-sw.js | 187 ++++++++++++++++
  • frontend/src/App.tsx | 4 +
  • frontend/src/pages/KioskSetupPage.tsx | 307 +++++++++++++++++++++++++++
  • frontend/src/pages/KioskStampPage.tsx | 348 ++++++++++++++++++++++++++++++

2026-05-25 22:53 22:56 (2m)

Beschreibung: Claude Code Session Projekt: timemaster

Commits

  • d0fdaef feat: Monatsansicht im /mobile Heute-Screen

Geänderte Dateien

  • DEVLOG.md | 18 ++
  • frontend/src/pages/mobile/MobileTodayScreen.tsx | 225 ++++++++++++++++++------

2026-05-25 22:59 22:59 (0m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

  • DEVLOG.md | 18 ++
  • frontend/src/pages/mobile/MobileTodayScreen.tsx | 225 ++++++++++++++++++------

2026-05-25 23:00 23:11 (11m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

  • DEVLOG.md | 18 ++
  • frontend/src/pages/mobile/MobileTodayScreen.tsx | 225 ++++++++++++++++++------

2026-05-25 23:14 23:15 (0m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

  • DEVLOG.md | 18 ++
  • frontend/src/pages/mobile/MobileTodayScreen.tsx | 225 ++++++++++++++++++------

2026-05-25 23:17 23:21 (3m)

Beschreibung: Claude Code Session Projekt: frontend

Commits

Keine Commits in dieser Session.

Geänderte Dateien

  • DEVLOG.md | 18 ++
  • frontend/src/pages/mobile/MobileTodayScreen.tsx | 225 ++++++++++++++++++------