• Claude's avatar
    Make login credentials case- and format-insensitive · 60eabb70
    Claude authored
    Postgres '=' is case-sensitive, so a user stored as 'Km...@gmail.com'
    could not log in from a phone keyboard that lowercases the email field.
    The lookup in AuthService returned null before Hash::check ever ran, so
    this presented as "wrong password" and was invisible in login_history —
    that table is only written once a user has been found.
    
    On OC-Sport this affected 8 of 26 accounts, and had already produced one
    duplicate registration: a user who could not get in simply signed up
    again with the same address in lowercase.
    
    - CredentialNormalizer: one canonical shape for emails and phones
    - AuthService: case-insensitive email lookup, deterministically ordered
      so a pre-existing case-duplicate pair resolves to the account actually
      in use rather than an arbitrary row; phone lookup matches local and
      +20 forms
    - User: set-mutators so new rows are stored canonical
    - Migration: normalises existing rows, skipping and logging any that
      would collide, since those are duplicate accounts needing a human
      merge rather than a guess
    Co-Authored-By: 's avatarClaude Opus 5 <noreply@anthropic.com>
    60eabb70
Name
Last commit
Last update
.claude Loading commit data...
Screenshots Loading commit data...
app Loading commit data...
bootstrap Loading commit data...
config Loading commit data...
database Loading commit data...
docker Loading commit data...
docs Loading commit data...
docs-site Loading commit data...
gap-filling-plans Loading commit data...
marketing-site Loading commit data...
plans Loading commit data...
public Loading commit data...
resources Loading commit data...
routes Loading commit data...
scripts Loading commit data...
storage Loading commit data...
tests Loading commit data...
.dockerignore Loading commit data...
.editorconfig Loading commit data...
.env.example Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.npmrc Loading commit data...
Beanding Guide.txt Loading commit data...
CLAUDE.md Loading commit data...
Dockerfile Loading commit data...
README.md Loading commit data...
artisan Loading commit data...
captain-definition Loading commit data...
composer.json Loading commit data...
composer.lock Loading commit data...
deploy.sh Loading commit data...
elcaptain-sportsonly-db.md Loading commit data...
one-click-app.yml Loading commit data...
package-lock.json Loading commit data...
package.json Loading commit data...
phpunit.xml Loading commit data...
system info.txt Loading commit data...
vite.config.js Loading commit data...
نادى الشيخ زايد كشف بيانات اللاعبين (2).html Loading commit data...