From c2fbb1b86f8feb6354ee0408e9318f601e35f463 Mon Sep 17 00:00:00 2001 From: linus Date: Sun, 26 Jul 2026 20:27:24 +0200 Subject: [PATCH] fast fertig --- .gitignore | 6 +- README.md | 71 +++-- hs_err_pid444.log | 282 ------------------- src/app/(app)/account/page.tsx | 1 - src/app/(app)/admin/users/page.tsx | 11 +- src/app/(app)/motorcycles/[id]/edit/page.tsx | 43 ++- src/app/(app)/motorcycles/[id]/page.tsx | 140 ++++++++- src/app/(app)/page.tsx | 17 +- src/app/actions/auth.ts | 10 +- src/app/actions/motorcycles.ts | 242 +++++++++++++++- src/app/actions/users.ts | 53 ++-- src/app/attachments/[id]/route.ts | 12 +- src/app/login/page.tsx | 4 +- src/components/maintenance-form.tsx | 2 +- src/components/motorcycle-form.tsx | 147 ++++++++++ src/lib/auth.ts | 16 +- src/lib/db.ts | 157 ++++++++++- src/lib/env.ts | 3 +- src/lib/validation.ts | 14 + 19 files changed, 836 insertions(+), 395 deletions(-) delete mode 100644 hs_err_pid444.log diff --git a/.gitignore b/.gitignore index 5ef6a52..f166882 100644 --- a/.gitignore +++ b/.gitignore @@ -30,8 +30,12 @@ yarn-debug.log* yarn-error.log* .pnpm-debug.log* -# env files (can opt-in for committing if needed) +# env files .env* +!.env.example + +# runtime data +/data/ # vercel .vercel diff --git a/README.md b/README.md index e215bc4..286deaf 100644 --- a/README.md +++ b/README.md @@ -1,36 +1,65 @@ -This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). +# Familien-Motorrad-Tracker -## Getting Started +Gemeinsame Verwaltung von Motorrädern, Wartungen, TÜV-/Inspektionsterminen und Fahrten für eine Familie. Die App nutzt Next.js, TypeScript und SQLite und ist für den Betrieb per Docker hinter einem Reverse Proxy vorbereitet. -First, run the development server: +## Lokale Entwicklung -```bash +Voraussetzungen: Node.js 24 und npm. + +```powershell +Copy-Item .env.example .env.local +npm ci npm run dev -# or -yarn dev -# or -pnpm dev -# or -bun dev ``` -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. +Vor dem Start in `.env.local` mindestens `ADMIN_PASSWORD`, `ADMIN_NAME` und `AUTH_SECRET` setzen. Die App ist anschließend unter `http://localhost:3000` erreichbar. Datenbank und Uploads liegen standardmäßig in `data\`. -You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. +Beim ersten Start wird genau dann ein Admin aus den `ADMIN_*`-Werten angelegt, wenn noch kein aktives Konto existiert. Danach meldet man sich mit `ADMIN_NAME` und `ADMIN_PASSWORD` an. Das initiale Passwort sollte direkt unter **Konto** geändert werden. -This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. +## Standard-Admin-Zugang (aus `.env.example`) -## Learn More +- Passwort: `change-this-password` +- Name: `Familien-Admin` -To learn more about Next.js, take a look at the following resources: +## Docker -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. +```powershell +Copy-Item .env.example .env +# Sichere Werte in .env eintragen +docker compose up -d --build +``` -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! +Die Anwendung ist standardmäßig über Port 3000 erreichbar. `PORT` in `.env` ändert nur den veröffentlichten Host-Port. Für eine Domain sollte nginx, Traefik oder ein anderer Reverse Proxy TLS terminieren und auf diesen Port weiterleiten. -## Deploy on Vercel +Sichere Schlüssel lassen sich beispielsweise so erzeugen: -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. +```powershell +node -e "console.log(require('node:crypto').randomBytes(32).toString('hex'))" +node -e "console.log(require('node:crypto').randomBytes(32).toString('base64'))" +``` -Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. +Den Hex-Wert für `AUTH_SECRET` und den Base64-Wert für `NEXT_SERVER_ACTIONS_ENCRYPTION_KEY` verwenden. + +## Benutzer und Rollen + +Es gibt Administratoren und Mitglieder. Jedes Motorrad gehört genau einem Benutzer (Besitzer). Administratoren sehen alle Motorräder, Mitglieder sehen ihre eigenen plus explizit freigegebene Motorräder. Besitzer und Administratoren können Motorräder mit anderen aktiven Benutzern per Benutzername teilen. Konten werden durch Administratoren verwaltet. Motorräder dürfen vom Besitzer oder von Administratoren gelöscht werden. Gelöschte Benutzer können sich nicht mehr anmelden und sind nicht mehr als Fahrer auswählbar; vorhandene Wartungen und Fahrten bleiben mit dem ursprünglichen Namen zur Nachvollziehbarkeit erhalten. Der letzte aktive Administrator kann weder gelöscht noch herabgestuft werden. + +## Backups + +Alle persistenten Daten liegen im Docker-Volume `moped-data` unter `/app/data`: + +- `moped-tracker.sqlite` sowie mögliche `-wal`-/`-shm`-Dateien +- `uploads\` mit Rechnungen und Fotos + +Für ein konsistentes Backup den Container kurz stoppen und das komplette Volume sichern. Bei lokaler Entwicklung entsprechend den gesamten Ordner `data\` sichern. + +## Qualität + +```powershell +npm run lint +npm run build +``` + +## Sinnvolle nächste Ausbaustufen + +E-Mail-Erinnerungen vor Fälligkeiten, Mehrsprachigkeit und PDF-Exporte der Wartungshistorie. diff --git a/hs_err_pid444.log b/hs_err_pid444.log deleted file mode 100644 index 448bf59..0000000 --- a/hs_err_pid444.log +++ /dev/null @@ -1,282 +0,0 @@ -# -# There is insufficient memory for the Java Runtime Environment to continue. -# Native memory allocation (mmap) failed to map 266338304 bytes. Error detail: G1 virtual space -# Possible reasons: -# The system is out of physical RAM or swap space -# This process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap -# Possible solutions: -# Reduce memory load on the system -# Increase physical memory or swap space -# Check if swap backing store is full -# Decrease Java heap size (-Xmx/-Xms) -# Decrease number of Java threads -# Decrease Java thread stack sizes (-Xss) -# Set larger code cache with -XX:ReservedCodeCacheSize= -# JVM is running with Zero Based Compressed Oops mode in which the Java heap is -# placed in the first 32GB address space. The Java Heap base address is the -# maximum limit for the native heap growth. Please use -XX:HeapBaseMinAddress -# to set the Java Heap base and to place the Java Heap above 32GB virtual address. -# This output file may be truncated or incomplete. -# -# Out of Memory Error (os_windows.cpp:3766), pid=444, tid=39064 -# -# JRE version: (25.0.3+9) (build ) -# Java VM: OpenJDK 64-Bit Server VM (25.0.3+9-b508.16, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64) -# No core dump will be written. Minidumps are not enabled by default on client versions of Windows -# - ---------------- S U M M A R Y ------------ - -Command Line: git4idea.http.GitAskPassApp Username for 'https://git.konfi-castle.com': - -Host: Intel(R) Core(TM) i7-10700F CPU @ 2.90GHz, 16 cores, 15G, Windows 11 , 64 bit Build 26100 (10.0.26100.8875) -Time: Sun Jul 26 12:04:05 2026 Mitteleuropäische Sommerzeit elapsed time: 0.015396 seconds (0d 0h 0m 0s) - ---------------- T H R E A D --------------- - -Current thread (0x000001d94e30a300): JavaThread "Unknown thread" [_thread_in_vm, id=39064, stack(0x000000d2e4200000,0x000000d2e4300000) (1024K)] - -Stack: [0x000000d2e4200000,0x000000d2e4300000] -Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) -V [jvm.dll+0x7c2949] (no source info available) -V [jvm.dll+0x78c01d] (no source info available) -V [jvm.dll+0xa105b3] (no source info available) -V [jvm.dll+0xa12dac] (no source info available) -V [jvm.dll+0xa134a3] (no source info available) -V [jvm.dll+0x308106] (no source info available) -V [jvm.dll+0x7beb55] (no source info available) -V [jvm.dll+0x7b1ae7] (no source info available) -V [jvm.dll+0x40224e] (no source info available) -V [jvm.dll+0x40a06b] (no source info available) -V [jvm.dll+0x3f68a9] (no source info available) -V [jvm.dll+0x3f6b5b] (no source info available) -V [jvm.dll+0x3ccb73] (no source info available) -V [jvm.dll+0x3cd7de] (no source info available) -V [jvm.dll+0x9d6907] (no source info available) -V [jvm.dll+0x467992] (no source info available) -V [jvm.dll+0x9ba039] (no source info available) -V [jvm.dll+0x509dd1] (no source info available) -V [jvm.dll+0x50b741] (no source info available) -C [jli.dll+0x5422] (no source info available) -C [ucrtbase.dll+0x2cd30] (no source info available) -C [KERNEL32.DLL+0x2e957] (no source info available) -C [ntdll.dll+0xaad6c] (no source info available) - -Lock stack of current Java thread (top to bottom): - - ---------------- P R O C E S S --------------- - -Threads class SMR info: -_java_thread_list=0x00007fffca8cc108, length=0, elements={ -} - -Java Threads: ( => current thread ) -Total: 0 - -Other Threads: - 0x000001d95085df00 WorkerThread "GC Thread#0" [id=17804, stack(0x000000d2e4300000,0x000000d2e4400000) (1024K)] - 0x000001d968bd8dc0 ConcurrentGCThread "G1 Main Marker" [id=10620, stack(0x000000d2e4400000,0x000000d2e4500000) (1024K)] - 0x000001d968bdd770 WorkerThread "G1 Conc#0" [id=46496, stack(0x000000d2e4500000,0x000000d2e4600000) (1024K)] - -[error occurred during error reporting (printing all threads), id 0xc0000005, EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007fffc9ee194a] -VM state: not at safepoint (not fully initialized) - -VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event]) -[0x00007fffca954fb0] Heap_lock - owner thread: 0x000001d94e30a300 - -Heap address: 0x0000000702000000, size: 4064 MB, Compressed Oops mode: Zero based, Oop shift amount: 3 - -CDS archive(s) mapped at: [0x0000000000000000-0x0000000000000000-0x0000000000000000), size 0, SharedBaseAddress: 0x0000000800000000, ArchiveRelocationMode: 1. -UseCompressedClassPointers 1, UseCompactObjectHeaders 0 -Narrow klass pointer bits 32, Max shift 3 -Narrow klass base: 0xffffffffffffffff, Narrow klass shift: -1 -Encoding Range: [0xffffffffffffffff - 0x000000007fffffff), (2147483648 bytes) -Klass Range: [0x0000000000000000 - 0x0000000000000000), (0 bytes) -Klass ID Range: [4294967295 - 0) (1) -No protection zone. - -GC Precious Log: - CardTable entry size: 512 - Card Set container configuration: InlinePtr #cards 4 size 8 Array Of Cards #cards 16 size 48 Howl #buckets 8 coarsen threshold 3686 Howl Bitmap #cards 512 size 80 coarsen threshold 460 Card regions per heap region 1 cards per card region 4096 - -Heap: - garbage-first heap total reserved 4161536K, committed 0K, used 0K [0x0000000702000000, 0x0000000800000000) - region size 2048K, 0 young (0K), 0 survivors (0K) - -Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, TAMS=top-at-mark-start, PB=parsable bottom - -Card table byte_map: [0x000001d964380000,0x000001d964b70000] _byte_map_base: 0x000001d960b70000 - -Marking Bits: (CMBitMap*) 0x000001d95085e540 - Bits: [0x000001d964b70000, 0x000001d968af0000) - -GC Heap Usage History (0 events): -No events - -Metaspace Usage History (0 events): -No events - -Dll operation events (1 events): -Event: 0.009 Loaded shared library C:\Users\Linus\AppData\Local\Programs\IntelliJ IDEA\jbr\bin\java.dll - -Deoptimization events (0 events): -No events - -Classes loaded (0 events): -No events - -Classes unloaded (0 events): -No events - -Classes redefined (0 events): -No events - -Internal exceptions (0 events): -No events - -VM Operations (0 events): -No events - -Memory protections (0 events): -No events - -Nmethod flushes (0 events): -No events - -Events (0 events): -No events - - -Dynamic libraries: -0x00007ff729850000 - 0x00007ff72985a000 C:\Users\Linus\AppData\Local\Programs\IntelliJ IDEA\jbr\bin\java.exe -0x00007ff92cd20000 - 0x00007ff92cf86000 C:\WINDOWS\SYSTEM32\ntdll.dll -0x00007ff8b1760000 - 0x00007ff8b1781000 C:\Program Files\Norton\Suite\aswhook.dll -0x00007ff92b780000 - 0x00007ff92b849000 C:\WINDOWS\System32\KERNEL32.DLL -0x00007ff92a640000 - 0x00007ff92aa3e000 C:\WINDOWS\System32\KERNELBASE.dll -0x00007ff92a070000 - 0x00007ff92a1bc000 C:\WINDOWS\System32\ucrtbase.dll -0x00007fffdceb0000 - 0x00007fffdcec7000 C:\Users\Linus\AppData\Local\Programs\IntelliJ IDEA\jbr\bin\jli.dll -0x00007ff92c270000 - 0x00007ff92c437000 C:\WINDOWS\System32\USER32.dll -0x00007ff92a610000 - 0x00007ff92a637000 C:\WINDOWS\System32\win32u.dll -0x00007ff92c820000 - 0x00007ff92c84b000 C:\WINDOWS\System32\GDI32.dll -0x00007ff929f40000 - 0x00007ff92a06a000 C:\WINDOWS\System32\gdi32full.dll -0x00007ff92a1d0000 - 0x00007ff92a273000 C:\WINDOWS\System32\msvcp_win.dll -0x00007ff923ae0000 - 0x00007ff923afe000 C:\Users\Linus\AppData\Local\Programs\IntelliJ IDEA\jbr\bin\VCRUNTIME140.dll -0x00007ff907170000 - 0x00007ff907402000 C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.26100.8875_none_3e0d5d42e32fe9dd\COMCTL32.dll -0x00007ff92abc0000 - 0x00007ff92ac69000 C:\WINDOWS\System32\msvcrt.dll -0x00007ff92bc10000 - 0x00007ff92bc42000 C:\WINDOWS\System32\IMM32.DLL -0x00007ff8d77b0000 - 0x00007ff8d790c000 C:\Program Files (x86)\Citrix\ICA Client\ctxapclient64.dll -0x00007ff92c950000 - 0x00007ff92ccd3000 C:\WINDOWS\System32\combase.dll -0x00007ff92ac70000 - 0x00007ff92ad88000 C:\WINDOWS\System32\RPCRT4.dll -0x00007ff923e20000 - 0x00007ff923e2b000 C:\WINDOWS\SYSTEM32\VERSION.dll -0x00007ff929e30000 - 0x00007ff929e5a000 C:\WINDOWS\SYSTEM32\bcrypt.dll -0x00007ff92bc70000 - 0x00007ff92bd1a000 C:\WINDOWS\System32\sechost.dll -0x00007ff92c760000 - 0x00007ff92c817000 C:\WINDOWS\System32\ADVAPI32.dll -0x00007ff928d10000 - 0x00007ff928d46000 C:\WINDOWS\SYSTEM32\ntmarta.dll -0x00007ff92a490000 - 0x00007ff92a53c000 C:\WINDOWS\System32\bcryptprimitives.dll -0x00007ff8ebad0000 - 0x00007ff8ebbbb000 C:\Program Files\Windhawk\Engine\1.5.1\64\windhawk.dll -0x00007ff921750000 - 0x00007ff921877000 C:\WINDOWS\SYSTEM32\WINHTTP.dll -0x00007ff923ad0000 - 0x00007ff923adc000 C:\Users\Linus\AppData\Local\Programs\IntelliJ IDEA\jbr\bin\vcruntime140_1.dll -0x00007ff910210000 - 0x00007ff910299000 C:\Users\Linus\AppData\Local\Programs\IntelliJ IDEA\jbr\bin\msvcp140.dll -0x00007fffc9b00000 - 0x00007fffcaa55000 C:\Users\Linus\AppData\Local\Programs\IntelliJ IDEA\jbr\bin\server\jvm.dll -0x00007ff92adc0000 - 0x00007ff92ae40000 C:\WINDOWS\System32\WS2_32.dll -0x00007ff929da0000 - 0x00007ff929dfe000 C:\WINDOWS\SYSTEM32\POWRPROF.dll -0x00007ff91b2f0000 - 0x00007ff91b326000 C:\WINDOWS\SYSTEM32\WINMM.dll -0x00007ff929d80000 - 0x00007ff929d94000 C:\WINDOWS\SYSTEM32\UMPDC.dll -0x00007ff928be0000 - 0x00007ff928bfb000 C:\WINDOWS\SYSTEM32\kernel.appcore.dll -0x00007ff923ac0000 - 0x00007ff923aca000 C:\Users\Linus\AppData\Local\Programs\IntelliJ IDEA\jbr\bin\jimage.dll -0x00007ff9271b0000 - 0x00007ff9273f2000 C:\WINDOWS\SYSTEM32\DBGHELP.DLL -0x000001d94fe80000 - 0x000001d94ff59000 C:\WINDOWS\System32\OLEAUT32.dll -0x00007ff923f70000 - 0x00007ff923fab000 C:\WINDOWS\SYSTEM32\dbgcore.DLL -0x00007ff923aa0000 - 0x00007ff923abf000 C:\Users\Linus\AppData\Local\Programs\IntelliJ IDEA\jbr\bin\java.dll -0x00007ff92b900000 - 0x00007ff92ba99000 C:\WINDOWS\System32\ole32.dll -0x00007ff92ae50000 - 0x00007ff92b5e2000 C:\WINDOWS\System32\SHELL32.dll - -JVMTI agents: none - -dbghelp: loaded successfully - version: 4.0.5 - missing functions: none -symbol engine: initialized successfully - sym options: 0x614 - pdb path: .;C:\Users\Linus\AppData\Local\Programs\IntelliJ IDEA\jbr\bin;C:\WINDOWS\SYSTEM32;C:\Program Files\Norton\Suite;C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.26100.8875_none_3e0d5d42e32fe9dd;C:\Program Files (x86)\Citrix\ICA Client;C:\Program Files\Windhawk\Engine\1.5.1\64;C:\Users\Linus\AppData\Local\Programs\IntelliJ IDEA\jbr\bin\server - -VM Arguments: -java_command: git4idea.http.GitAskPassApp Username for 'https://git.konfi-castle.com': -java_class_path (initial): C:/Users/Linus/AppData/Local/Programs/IntelliJ IDEA/plugins/vcs-git/lib/git4idea-rt.jar;C:/Users/Linus/AppData/Local/Programs/IntelliJ IDEA/lib/externalProcess-rt.jar -Launcher Type: SUN_STANDARD - -[Global flags] - intx CICompilerCount = 12 {product} {ergonomic} - uint ConcGCThreads = 3 {product} {ergonomic} - uint G1ConcRefinementThreads = 13 {product} {ergonomic} - size_t G1HeapRegionSize = 2097152 {product} {ergonomic} - size_t InitialHeapSize = 266338304 {product} {ergonomic} - size_t MarkStackSize = 4194304 {product} {ergonomic} - size_t MarkStackSizeMax = 536870912 {product} {ergonomic} - size_t MaxHeapSize = 4261412864 {product} {ergonomic} - size_t MinHeapDeltaBytes = 2097152 {product} {ergonomic} - size_t MinHeapSize = 8388608 {product} {ergonomic} - uintx NonNMethodCodeHeapSize = 7667712 {pd product} {ergonomic} - uintx NonProfiledCodeHeapSize = 122028032 {pd product} {ergonomic} - uintx ProfiledCodeHeapSize = 122028032 {pd product} {ergonomic} - uintx ReservedCodeCacheSize = 251723776 {pd product} {ergonomic} - bool SegmentedCodeCache = true {product} {ergonomic} - size_t SoftMaxHeapSize = 4261412864 {manageable} {ergonomic} - bool UseCompressedOops = true {product lp64_product} {ergonomic} - bool UseG1GC = true {product} {ergonomic} - bool UseLargePagesIndividualAllocation = false {pd product} {ergonomic} - -Logging: -Log output configuration: - #0: stdout all=warning uptime,level,tags foldmultilines=false - #1: stderr all=off uptime,level,tags foldmultilines=false - -Release file: - -Environment Variables: -JAVA_HOME=C:\Program Files\Eclipse Adoptium\jdk-21.0.10.7-hotspot\ -PATH=C:/Program Files/Git/mingw64/libexec/git-core;C:/Program Files/Git/mingw64/libexec/git-core;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Users\Linus\bin;C:\Program Files\Meta Horizon\Support\oculus-runtime;C:\Program Files\Eclipse Adoptium\jdk-21.0.10.7-hotspot\bin;C:\Program Files\Eclipse Adoptium\jdk-17.0.17.10-hotspot\bin;C:\Program Files\SqlCmd\;C:\Program Files\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Common Files\Oracle\Java\java8path;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Program Files\PuTTY\;C:\Program Files\nodejs\;C:\ProgramData\chocolatey\bin;C:\Program Files\NVIDIA Corporation\NVIDIA app\NvDLISR;C:\Users\Linus\.config\herd\bin\nvm;C:\Program Files\nodejs;C:\Program Files\WireGuard\;C:\Program Files\dotnet\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\CMake\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Users\Linus\AppData\Local\Muse Hub\lib;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\ProgramData\chocolatey\lib\maven\apache-maven-3.9.15\bin;C:\Program Files\Docker\Docker\resources\bin;C:\Program Files\PatchMon;C:\Users\Linus\AppData\Local\Muse Hub\lib;C:\Program Files\Yubico\YubiKey Manager CLI\;C:\Program Files\Netbird;C:\Program Files\Zabbix Agent\;C:\Program Files\Netbird\;C:\Program Files\PowerShell\7\;C:\Users\Linus\.local\bin;C:\Users\Linus\AppData\Local\Programs\Python\Python311\Scripts\;C:\Users\Linus\AppData\Local\Programs\Python\Python311\;C:\Users\Linus\AppData\Local\Programs\Python\Python314\Scripts;C:\Users\Linus\AppData\Local\Programs\Python\Python314\;C:\Users\Linus\.cargo\bin;C:\Users\Linus\.config\herd-lite\bin;C:\Users\Linus\AppData\Local\Microsoft\WindowsApps;C:\Users\Linus\AppData\Local\JetBrains\Toolbox\scripts;C:\Users\Linus\AppData\Local\GitHubDesktop\bin;C:\ProgramData\Linus\GitHubDesktop\bin;C:\Users\Linus\AppData\Roaming\npm;C:\Flutter\flutter\bin;C:\Users\Linus\AppData\Local\Programs\Azure Data Studio\bin;C:\Users\Linus\.dotnet\tools;C:\Program Files (x86)\Nmap;C:\gradle\gradle-9.2.0\bin;C:\Users\Linus\AppData\Local\Programs\Antigravity\bin;C:\Users\Linus\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\Linus\AppData\Local\Microsoft\WindowsApps;C:\Users\Linus\AppData\Local\Microsoft\WinGet\Links;C:\Users\Linus\AppData\Local\Microsoft\WinGet\Packages\Google.PlatformTools_Microsoft.Winget.Source_8wekyb3d8bbwe\platform-tools;C:\Users\Linus\AppData\Local\Programs\Ollama;C:\Program Files\JetBrains\DataGrip 2026.1\bin;C:\Users\Linus\AppData\Local\Programs\Warp\bin -USERNAME=Linus -DISPLAY=:0.0 -LC_ALL=en_US.UTF-8 -TERM=xterm-256color -TMPDIR=C:\Users\Linus\AppData\Local\Temp -OS=Windows_NT -PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 165 Stepping 5, GenuineIntel -TMP=C:\Users\Linus\AppData\Local\Temp -TEMP=C:\Users\Linus\AppData\Local\Temp - - - - -Compilation memory statistics disabled. - -Periodic native trim disabled - -JNI global refs: -JNI global refs: 0, weak refs: 0 - -JNI global refs memory usage: 0, weak refs: 0 - -Process memory usage: -Resident Set Size: 17500K (0% of 16643176K total physical memory with 512524K free physical memory) - -OOME stack traces (most recent first): -Classloader memory used: - ---------------- S Y S T E M --------------- - -OS: - Windows 11 , 64 bit Build 26100 (10.0.26100.8875) -OS uptime: 0 days 1:29 hours -Hyper-V role detected - -CPU: total 16 (initial active 16) (8 cores per cpu, 2 threads per core) family 6 model 165 stepping 5 microcode 0xec, cx8, cmov, fxsr, ht, mmx, 3dnowpref, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, lzcnt, tsc, tscinvbit, avx, avx2, aes, erms, clmul, bmi1, bmi2, adx, fma, vzeroupper, clflush, clflushopt, hv, rdtscp, f16c -Processor Information for the first 16 processors : - Max Mhz: 2904, Current Mhz: 2904, Mhz Limit: 2904 - -Memory: 4k page, system-wide physical 16253M (500M free) -TotalPageFile size 34846M (AvailPageFile size 112M) -current process WorkingSet (physical memory assigned to process): 17M, peak: 17M -current process commit charge ("private bytes"): 73M, peak: 326M - -vm_info: OpenJDK 64-Bit Server VM (25.0.3+9-b508.16) for windows-amd64 JRE (25.0.3+9-b508.16), built on 2026-06-22 with MS VC++ 17.14 (VS2022) - -END. diff --git a/src/app/(app)/account/page.tsx b/src/app/(app)/account/page.tsx index ffb8c7c..a51c315 100644 --- a/src/app/(app)/account/page.tsx +++ b/src/app/(app)/account/page.tsx @@ -34,7 +34,6 @@ export default async function AccountPage({

Profil

Name
{user.name}
-
E-Mail
{user.email}
Rolle
{user.role === "admin" ? "Administrator" : "Mitglied"}
diff --git a/src/app/(app)/admin/users/page.tsx b/src/app/(app)/admin/users/page.tsx index f5425a2..08178e5 100644 --- a/src/app/(app)/admin/users/page.tsx +++ b/src/app/(app)/admin/users/page.tsx @@ -15,7 +15,6 @@ export const runtime = "nodejs"; type UserRow = { id: number; name: string; - email: string; role: UserRole; created_at: string; }; @@ -30,7 +29,9 @@ export default async function AdminUsersPage({ const params = await searchParams; const users = db - .prepare("SELECT id, name, email, role, created_at FROM users ORDER BY name COLLATE NOCASE") + .prepare( + "SELECT id, name, role, created_at FROM users WHERE active = 1 ORDER BY name COLLATE NOCASE", + ) .all() as UserRow[]; const adminCount = users.filter((u) => u.role === "admin").length; @@ -62,7 +63,6 @@ export default async function AdminUsersPage({ Name - E-Mail Rolle Angelegt @@ -75,7 +75,6 @@ export default async function AdminUsersPage({ return ( {row.name}{isSelf && Du} - {row.email}
@@ -121,10 +120,6 @@ export default async function AdminUsersPage({ Name * -