Say which identity write failed and why, instead of one generic error #152
Etiketter
Inga etiketter
area/backups
area/ci
area/control-panel
area/identity
area/infra
area/observability
area/payments
area/security
area/storage
area/web
blocked
needs-info
needs-triage
ready-for-implementation
type
bug
type
chore
type
docs
type
epic
type
feature
type
task
wontfix
Ingen milstolpe
Inget projekt
Inga tilldelade
1 deltagare
Notiser
Förfallodatum
Inget förfallodatum satt.
Beroenden
Inga beroenden satta
Referens
bitborg/bitborg-web#152
Läser in…
Hänvisa till i nytt ärende
Ingen beskrivning angiven.
Ta bort grenen "%!s()"
Borttagning av en gren är permanent. Även om den borttagna grenen kan fortsätta existera en kort tid innan den faktiskt tas bort, kan det INTE ångras i de flesta fall. Vill du fortsätta?
setPersonAttrscollapses every non-OK response into{ ok: false, reason: "error" }. Theidentity provider returns a clean distinction — 400 for an invalid value, 409 for one already in
use, naming the conflicting attribute — and we throw it away. So "that address is malformed" and
"that address already belongs to another account" both render as "something went wrong on our
side", which points the user at us instead of at their input.
Two follow-on problems:
/auth/confirm-emailconsumes the single-use token before the write. That ordering is rightagainst replay, but it means a rejected value burns the link: the user must start over, and if
the address is one the identity provider will never accept, they will fail identically every
time.
matches on that log prefix, so an entire class of rejected input produces no log line and never
raises anything. This is the same shape of blind spot the alert was added to close.
What to do
setPersonAttrs(invalid/taken/error), classifyingon status and the conflicting-attribute field
before a token is minted; keep the post-write check as the authoritative one
that the address cannot be used, so they do not retry into the same wall
Part of gitborg/gitborg-docs#66.