Data export and account closing. Closing anonymizes rather than deletes, so records of
other modules that name the account stay whole; AccountClosed tells those modules
to erase what they hold.
Signing in as a member, for a permitted principal of another area: each time recorded
with its reason and raised as an event, the session it opens marked as such to the member
and ended by itself after half an hour, and the impersonator signed back in at its end.
Written as Argon2id in the PHC string format, $argon2id$v=19$m=19456,t=2,p=1$<salt>$<hash>.
pbkdf2-sha256$<iterations>$<salt>$<hash>, written before, is still read and checked.
An address no account holds gets one without a password, which signs in once its owner
sets one (password-reset), follows a sign-in link or connects a provider. An account
already a member keeps its membership, so adding it again changes nothing but a role.
An account adopted, or given a role, whose address nobody proved may have been signed up
by someone else expecting this, so it is distrusted.
Idempotent: a grant role already holds is returned unchanged. Checks nothing of who
grants, so it is for seeds and boot; a handler grants with grant_as.
Read and committed beyond the request’s reach, as an area’s principal seldom owns its
members’ records. Without sessions, a session open in the area stays open until its
cookie expires.
Signs account in to an area whose principal is another of its records, such as an
organization it belongs to; the session is listed as the account’s. The caller, an
Admitter of its own, has checked that the account may act as principal.