You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The app needs anonymous user registration restricted to email
addresses on an allow-list of approved organisations and an
approval-by-another-user step before a newly created account gets
access. Before we build any of that, we need to decide how account
state is modelled on the User entity.
Role-based gating — no roles → no access. Less code, but
conflicts with Symfony Security's implicit ROLE_USER guarantee
on the generated User entity, and conflates identity state with
authorisation.
This issue tracks the architectural decision. The decision is recorded
as an ADR under docs/adr/; the resulting implementation work is
filed as follow-on issues that reference the ADR.
ADR under docs/adr/ recording the decision and rationale.
Implementation issues opened for the resulting work (self-signup
with domain allow-list, login gating via UserChecker, approval
queue UI for domainManager users).
The app needs anonymous user registration restricted to email
addresses on an allow-list of approved organisations and an
approval-by-another-user step before a newly created account gets
access. Before we build any of that, we need to decide how account
state is modelled on the
Userentity.The space, broadly:
status: pending | approved | blocked, oractive+approvedbooleans (theactivehalf is already in feat: add User entity with active / domainManager / name fields #45).conflicts with Symfony Security's implicit
ROLE_USERguaranteeon the generated
Userentity, and conflates identity state withauthorisation.
This issue tracks the architectural decision. The decision is recorded
as an ADR under
docs/adr/; the resulting implementation work isfiled as follow-on issues that reference the ADR.
Related
active,domainManager,name)Acceptance
docs/adr/recording the decision and rationale.with domain allow-list, login gating via
UserChecker, approvalqueue UI for
domainManagerusers).or supersede feat: add User entity with active / domainManager / name fields #45 accordingly.