fix(api): dead accounts cannot log in, hold sessions, or keep identity assets

This commit is contained in:
Lemon-miaow committed 2026-09-23 05:28:32 +08:00
1 parent ba9d98f7ce
commit 58535890c4
7 files changed
+306 -11

No files matched your search

@@ -148,6 +148,13 @@ func (a *API) handlePasskeyLoginDiscoverableFinish(w http.ResponseWriter, r *htt
if err != nil {
return PasskeyUser{}, err
}
// A disabled or soft-deleted account must not complete a login even when it
// still holds a credential (UserByID is an unfiltered lookup shared with admin
// reads, so the liveness check lives here, at the door). Fail closed with the
// same opaque outcome as an unknown handle (audit #33).
if d, err := a.Repo.UserDetail(r.Context(), u.ID); err != nil || d.Disabled || d.DeletedAt != nil {
return PasskeyUser{}, ErrNotFound
}
creds, err := a.Repo.PasskeyCredentialsForUser(r.Context(), u.ID)
if err != nil {
return PasskeyUser{}, err