docs(authentik): document the self-serve user-settings flow + password stage
The default-user-settings-flow was missing a PasswordStage, so users could edit name/email/locale but not their password. Added a PasswordStage (InbuiltBackend) bound at order 101. Documented the flow's stage table and the two ORM gotchas (MTI through model, required backends array).
This commit is contained in:
@@ -272,6 +272,34 @@ Two secrets live in the host `.env` (git-ignored; placeholders in
|
||||
`dankclaw/authentik/quadlet/`, run `./scripts/deploy.sh dankclaw`. Authentik
|
||||
migrates the schema on startup.
|
||||
|
||||
## Self-serve user-settings flow (password change)
|
||||
|
||||
Users change their own account details through the `default-user-settings-flow`
|
||||
(`https://auth.franksdank.cloud/if/flow/default-user-settings-flow/`) — the
|
||||
target of the homepage footer's "account" link. It is a `stage_configuration`
|
||||
designated flow, so it renders every bound `ConfigurableStage` for the logged-in
|
||||
user.
|
||||
|
||||
Stages, in execution order (the `FlowStageBinding.order` field, not the M2M
|
||||
insertion order):
|
||||
|
||||
| order | stage | type | what it does |
|
||||
|---|---|---|---|
|
||||
| 20 | `default-user-settings` | `PromptStage` | intro prompt |
|
||||
| 100 | `default-user-settings-write` | `UserWriteStage` | edit name / email / locale |
|
||||
| 101 | `default-user-settings-password` | `PasswordStage` | change password (`InbuiltBackend`) |
|
||||
|
||||
**The `PasswordStage` was missing until 2026-09-25.** The stock flow only
|
||||
carried the prompt + `UserWriteStage`, so users could edit name/email/locale
|
||||
but had no way to change their password. The fix: create a `PasswordStage`
|
||||
(backend `authentik.core.auth.InbuiltBackend`) and bind it to the flow. Two
|
||||
ORM gotchas: `Flow.stages.add()` fails on this through model
|
||||
(`Can't bulk create a multi-table inherited model` — `FlowStageBinding` is
|
||||
MTI), so create the `FlowStageBinding` row directly with an explicit `order`;
|
||||
and `PasswordStage` requires the `backends` array (a bare `name` insert hits a
|
||||
`NOT NULL` violation). Verified via the `FlowPlanner` — the plan now lists all
|
||||
three stages.
|
||||
|
||||
## Outpost claim cache (`proxysession`) — 403 after a group add
|
||||
|
||||
The embedded outpost does not re-evaluate group membership per request. Each
|
||||
|
||||
Reference in New Issue
Block a user