diff --git a/src/pages/docs/configuration.astro b/src/pages/docs/configuration.astro index a872ace..2ba0f2f 100644 --- a/src/pages/docs/configuration.astro +++ b/src/pages/docs/configuration.astro @@ -60,7 +60,7 @@ import DocsLayout from '@/layouts/DocsLayout.astro'; OM_SMTP_HOST / OM_SMTP_PORT / OM_SMTP_FROM empty / 587 / empty - Optional. When set, adding an admin also emails the temporary password. + Optional. When set, adding an admin emails the temporary password, and the sign-in page can email a password-reset link. Set OM_PUBLIC_URL so that link is a full address. OM_SMTP_USERNAME / OM_SMTP_PASSWORD diff --git a/src/pages/docs/console.astro b/src/pages/docs/console.astro index 6c16fbb..c87bdb5 100644 --- a/src/pages/docs/console.astro +++ b/src/pages/docs/console.astro @@ -46,6 +46,14 @@ import DocsLayout from '@/layouts/DocsLayout.astro'; their own password at the next sign-in. Every signed-in account is an admin, and the last admin cannot be removed.

+

+ When SMTP is configured, Forgot password? on the sign-in page emails a + link to that address. The link works once and expires in one hour. It sets a new password + and ends that admin's browser sessions. The page says the same thing whether or not the + address is an admin. Personal API tokens stay valid. Without SMTP, the link is not shown. + On the machine, om admin reset-password --email you@example.com sets a new + password instead. Set OM_PUBLIC_URL so the email contains a full address. +

Google and GitHub buttons appear only when that provider is configured. Register {'{OM_PUBLIC_URL}'}/auth/google/callback or diff --git a/src/pages/docs/kubernetes.astro b/src/pages/docs/kubernetes.astro index 5a40a51..13720e2 100644 --- a/src/pages/docs/kubernetes.astro +++ b/src/pages/docs/kubernetes.astro @@ -79,7 +79,7 @@ helm install om deploy/helm/opensourceom \\ api.smtp.host / api.smtp.port / api.smtp.from empty / 587 / empty - Optional SMTP for temporary admin passwords. Setting the host requires from. A password stays in the chart Secret. + Optional SMTP for temporary admin passwords and password-reset links. Setting the host requires from. A password stays in the chart Secret. api.publicURL diff --git a/src/pages/docs/security.astro b/src/pages/docs/security.astro index 7e3bad1..1ad2516 100644 --- a/src/pages/docs/security.astro +++ b/src/pages/docs/security.astro @@ -26,7 +26,8 @@ import DocsLayout from '@/layouts/DocsLayout.astro';

GET /v1/health, GET /v1/auth/session, POST /v1/auth/logout, POST /v1/auth/setup, - POST /v1/auth/login, and POST /v1/auth/totp do not require a session. + POST /v1/auth/login, POST /v1/auth/totp, + POST /v1/auth/forgot, and POST /v1/auth/reset do not require a session. GET /v1/admins, POST /v1/admins, POST /v1/admins/token, and DELETE /v1/admins/{'{id}'} require a console session. A personal token cannot @@ -49,7 +50,10 @@ import DocsLayout from '@/layouts/DocsLayout.astro'; People sign in with an email and password. Every account is an admin. The first account is created from the setup form, or with om admin create before the port is reachable. OM_ADMIN_EMAIL pins that first address when you set it. Later admins - receive a temporary password and choose their own at the next sign-in. Passwords are stored + receive a temporary password and choose their own at the next sign-in. When SMTP is + configured, an admin can request a one-hour reset link. The response does not reveal + whether the address exists. The link works once, sets a new password, and ends that + admin's sessions. Personal API tokens stay valid. Passwords are stored as Argon2id hashes. Optional authenticator-app two-factor authentication is per admin. Sessions are httpOnly cookies. The cookie is marked Secure when OM_PUBLIC_URL uses https.