Skip to content

fix: Telefonnummern normalisieren — keine Duplikat-User mehr - #12

Merged
Pascal-DCG merged 2 commits into
mainfrom
claude/phone-normalization
Jul 12, 2026
Merged

Pascal-DCG merged 2 commits into
mainfrom
claude/phone-normalization

Conversation

@Pascal-DCG

Copy link
Copy Markdown
Owner

Problem

Nutzer gaben die Nummer mal mit, mal ohne die nationale 0 nach der Ländervorwahl ein (+49 0151… vs +49 151…). Da der Auth-User über einen E-Mail-Alias aus der Nummer gebildet wird, entstanden dadurch doppelte Accounts (z.B. 49015129079150 und 4915129079150 = dieselbe Person).

Fix

  • src/lib/phone.ts — normalizePhoneDE() bringt die Nummer auf E.164 (+49…) und entfernt die Trunk-0 nach +49; isValidPhoneDE() als leichte Prüfung.
  • login-form — normalisiert vor dem Senden, validiert das Format und zeigt einen Hinweistext („Format: +49 151 12345678 — ohne die 0 nach der +49").
  • send-otp / verify-otp — normalisieren serverseitig (die eigentliche Garantie gegen Duplikate), bevor User / E-Mail-Alias / otp_requests gebildet werden.

Deploy (nötig, da Server-Fix)

supabase functions deploy send-otp   --project-ref ljmaeuarmfazvwoohlxk
supabase functions deploy verify-otp --project-ref ljmaeuarmfazvwoohlxk

Bestehende Duplikate

Werden dadurch nicht automatisch bereinigt — die vorhandenen Doppel-Accounts müssen manuell zusammengeführt/gelöscht werden (siehe Chat-Anleitung mit Such-SQL).

Test plan

  • Functions deployed
  • Login mit +49 0151 … und +49 151 … → landet beim selben Account
  • Ungültige Eingabe → Hinweis erscheint

https://claude.ai/code/session_01G1v5ZGvnrS5hb6eX2hfxKb


Generated by Claude Code

Nutzer gaben die Nummer mal mit, mal ohne die nationale 0 nach +49 ein
(+490151… vs +49151…) -> zwei verschiedene E-Mail-Aliase -> doppelte Accounts.

- src/lib/phone.ts: normalizePhoneDE() bringt alles auf E.164 (+49…) und
  entfernt die Trunk-0; isValidPhoneDE() als leichte Pruefung.
- login-form: normalisiert vor dem Senden, validiert, + Hinweistext zum Format.
- send-otp / verify-otp: normalisieren serverseitig (die eigentliche Garantie),
  bevor User/E-Mail-Alias/otp_requests gebildet werden.

https://claude.ai/code/session_01G1v5ZGvnrS5hb6eX2hfxKb
@vercel

vercel Bot commented Jul 12, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
kommit Ready Ready Preview, Comment Jul 12, 2026 11:10am

Deployt send-otp/verify-otp/send-push bei jedem Push auf main, der
supabase/functions/** aendert (oder manuell via workflow_dispatch).
Nutzt supabase/setup-cli + SUPABASE_ACCESS_TOKEN (Repo-Secret).
Loest das wiederkehrende manuelle Deployen ab.

https://claude.ai/code/session_01G1v5ZGvnrS5hb6eX2hfxKb
@Pascal-DCG
Pascal-DCG merged commit 1867059 into main Jul 12, 2026
4 checks passed

This branch was successfully deployed

1 active deployment
Preview — 36a2a003 Deployed Jul 12, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants