Backend: - Migration 007 deduplicates existing users by name (case-insensitive, keeping oldest) and adds a unique index on (event_id, LOWER(display_name)) - find_by_event_and_name is now case-insensitive (LOWER comparison) - join endpoint checks name availability before creating; returns 409 Conflict with code "conflict" when the name is taken Frontend (join page): - On 409, switches to a name-taken view showing an amber warning with name-choice tips, a PIN input that runs the recover flow inline, and an "Anderen Namen wählen" button that returns to the name input Test guide: added Steps 8 (rate-limit auto-retry) and 9 (name uniqueness) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
5 lines
118 B
SQL
5 lines
118 B
SQL
DROP INDEX IF EXISTS idx_user_event_name_ci;
|
|
|
|
CREATE INDEX idx_user_event_name
|
|
ON "user"(event_id, display_name);
|