Commit Graph

253 Commits

Author SHA1 Message Date
Matthias Hochmeister
3101f1a9c5 fix: five dashboard improvements across booking, vehicles, profile, and UI
- fix(auth): guard extractNames() against Authentik sending full name in
  given_name field (e.g. "Matthias Hochmeister" + family_name "Hochmeister");
  detect by checking given_name ends with family_name suffix, fall through
  to name-splitting so Vorname/Nachname display correctly in Profile

- fix(db): add migration 018 to repair broken BEFORE UPDATE triggers on
  veranstaltungen and veranstaltung_kategorien; old triggers called
  update_updated_at_column() which references NEW.updated_at, but both
  tables use aktualisiert_am, causing every category/event edit to fail

- feat(booking): open vehicle booking creation to all authenticated users;
  only dashboard_admin / dashboard_moderator can change the Buchungsart
  (type select disabled for regular members); edit and cancel still
  restricted to WRITE_GROUPS

- feat(vehicles): VehicleDashboardCard now fetches equipment warnings via
  equipmentApi.getVehicleWarnings() in parallel and shows an alert when
  any vehicle equipment is not einsatzbereit

- fix(ui): add MuiTextField defaultProps (InputLabelProps.shrink=true) and
  MuiOutlinedInput notch legend font-size override to theme to eliminate
  floating-label / border conflict on click

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 11:04:57 +01:00
Matthias Hochmeister
2306741c4d feat: dashboard widgets, auth fix, profile names, dynamic groups
- Add VehicleDashboardCard: self-contained widget modelled after
  AtemschutzDashboardCard, shows einsatzbereit ratio and inspection
  warnings inline; replaces StatsCard + InspectionAlerts in Dashboard

- Add EquipmentDashboardCard: consolidated equipment status widget
  showing only aggregated counts (no per-item listing); replaces
  EquipmentAlerts component in Dashboard

- Fix auth race condition: add authInitialized flag to api.ts so 401
  responses during initial token validation no longer trigger a
  spurious redirect to /login; save intended destination before login
  redirect and restore it after successful auth callback

- Fix profile firstname/lastname: add extractNames() helper to
  auth.controller.ts that falls back to splitting userinfo.name when
  Authentik does not provide separate given_name/family_name fields;
  applied on both create and update paths

- Dynamic groups endpoint: replace hardcoded KNOWN_GROUPS array in
  events.controller.ts with a DB query (SELECT DISTINCT unnest
  (authentik_groups) FROM users); known slugs get German labels via
  lookup map, unknown slugs are humanized automatically

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 10:28:31 +01:00
Matthias Hochmeister
831927ae90 featuer change for calendar 2026-03-03 09:56:35 +01:00
Matthias Hochmeister
232d8aa872 featuer change for calendar 2026-03-03 09:55:18 +01:00
Matthias Hochmeister
64b23bae5c featuer change for calendar 2026-03-03 09:53:23 +01:00
Matthias Hochmeister
d9af34b744 featuer change for calendar 2026-03-03 09:52:10 +01:00
Matthias Hochmeister
146f79cf00 featuer change for calendar 2026-03-03 08:57:32 +01:00
Matthias Hochmeister
ad069fde10 calendar: add category-group links, fix iCal share URL, remove legend
- Link categories to user groups via new zielgruppen column on
  veranstaltung_kategorien (migration 017), editable in the category
  management UI with group checkboxes and chip display
- Fix broken iCal share link by adding ICAL_BASE_URL to docker-compose
  and falling back to CORS_ORIGIN when ICAL_BASE_URL is unset
- Remove the colored-dot legend footer from the month calendar view

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 08:10:33 +01:00
Matthias Hochmeister
9a6b9511c8 featuer change for calendar 2026-03-02 17:26:01 +01:00
Matthias Hochmeister
314b6c3bed featuer change for calendar 2026-03-02 16:59:24 +01:00
Matthias Hochmeister
6495ca94d1 bug fix for atemschutz 2026-03-01 19:19:12 +01:00
Matthias Hochmeister
2630224edd bug fix for atemschutz 2026-03-01 19:17:36 +01:00
Matthias Hochmeister
d9e6c0658f bug fix for atemschutz 2026-03-01 18:21:00 +01:00
Matthias Hochmeister
46d0895ebd bug fix for atemschutz 2026-03-01 18:15:14 +01:00
Matthias Hochmeister
5f0ed3c87e bug fix for atemschutz 2026-03-01 18:11:00 +01:00
Matthias Hochmeister
d074caa695 bug fix for atemschutz 2026-03-01 18:07:17 +01:00
Matthias Hochmeister
4328343f3e bug fix for atemschutz 2026-03-01 17:59:40 +01:00
Matthias Hochmeister
e0b687988b bug fix for atemschutz 2026-03-01 17:27:39 +01:00
Matthias Hochmeister
9b1f290a87 bug fix for atemschutz 2026-03-01 17:19:33 +01:00
Matthias Hochmeister
faa18b5688 bug fix for atemschutz 2026-03-01 15:03:27 +01:00
Matthias Hochmeister
4f7823ab16 bug fix for atemschutz 2026-03-01 15:01:30 +01:00
Matthias Hochmeister
a36e236175 bug fix for atemschutz 2026-03-01 14:53:46 +01:00
Matthias Hochmeister
5b8f40ab9a add now features 2026-03-01 14:41:45 +01:00
Matthias Hochmeister
681acd8203 add now features 2026-03-01 11:50:27 +01:00
Matthias Hochmeister
4476ca82de fix login error 2026-02-28 17:35:57 +01:00
Matthias Hochmeister
e2be29c712 refine vehicle freatures 2026-02-28 17:19:18 +01:00
Matthias Hochmeister
0e81eabda6 fix: add React Router v7 future flags and defensive null guard for wartungslog 2026-02-28 16:10:26 +01:00
Matthias Hochmeister
f7b5261ad9 rework vehicle handling 2026-02-28 14:43:46 +01:00
Matthias Hochmeister
bb54af4630 rework vehicle handling 2026-02-28 14:30:20 +01:00
Matthias Hochmeister
b7b883649c rework vehicle handling 2026-02-28 14:13:56 +01:00
Matthias Hochmeister
1e478479be rework vehicle handling 2026-02-28 13:57:41 +01:00
Matthias Hochmeister
41fc41bee4 rework vehicle handling 2026-02-28 13:34:16 +01:00
Matthias Hochmeister
dbe4f52871 featur add fahrmeister 2026-02-27 21:46:50 +01:00
Matthias Hochmeister
58fa420fea add features 2026-02-27 19:53:58 +01:00
Matthias Hochmeister
620bacc6b5 add features 2026-02-27 19:50:14 +01:00
Matthias Hochmeister
c5e8337a69 add features 2026-02-27 19:47:20 +01:00
Matthias Hochmeister
44e22a9fc6 fix authentication 2026-02-27 19:05:18 +01:00
Matthias Hochmeister
36ffe7e88e fix login 2026-02-27 14:42:51 +01:00
Matthias Hochmeister
2a70c274fb update env setup 2026-02-27 14:13:50 +01:00
Matthias Hochmeister
44c7958980 update env setup 2026-02-27 14:10:27 +01:00
Matthias Hochmeister
1c6c59c199 fix URLs 2026-02-27 14:02:03 +01:00
Matthias Hochmeister
abd7c041f4 resolve build error 2026-02-26 16:30:07 +01:00
Matthias Hochmeister
deabad167c resolve build error 2026-02-26 16:18:21 +01:00
Matthias Hochmeister
6c24077148 resolve build error 2026-02-26 16:08:27 +01:00
Matthias Hochmeister
971ce3850c fix: upgrade npm in Docker builder to fix Invalid Version error
npm 11 (used locally, Node 25) generates package-lock.json entries for
  optional platform packages without a 'version' field. npm 10.8.2 bundled
  in node:20-alpine rejects these with 'Invalid Version:' during npm ci.

  Upgrade npm to latest inside the builder stage before running npm ci.

  Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-26 15:37:00 +01:00
Matthias Hochmeister
c8cd1e3207 fix: regenerate package-lock.json and remove obsolete docker-compose version field 2026-02-26 15:32:09 +01:00
Matthias Hochmeister
7fbb4d7545 update frontend building 2026-02-26 15:27:29 +01:00
Matthias Hochmeister
031e02d8b0 update frontend building 2026-02-26 15:21:53 +01:00
Matthias Hochmeister
8a7ceccb2e update frontend building 2026-02-26 15:17:16 +01:00
Matthias Hochmeister
ac7572213c update build paths 2026-02-26 15:09:27 +01:00