The ninth page and the core of the owner's admin-docs brief: all 29 registry settings plus Base URL, documented setting-by-setting to the admin tier — key, type, default, valid range, live-vs-restart, and prose for what it does and what it means when that's confusing (extractor-version as the gradual backfill lever vs. force rescan; password rules apply at next set, never retroactively; tombstone TTL as offline-device protection; rate limits as throttling behavior; worker pool sizing honesty for small servers). Grouped exactly like the page renders them, with the three save paths explained up front. Ranges/defaults/flags from SettingDefaults; exclusion of the three dedicated-UI keys from the tunables verified in the page handler. Backfills the Settings links into dashboard.md and users.md now that the target exists. Glossary gains Save Settings, Save Scan Settings, both Tunable bucket headings, and Default Timezone.
66 lines
2.7 KiB
Markdown
66 lines
2.7 KiB
Markdown
<!-- Ground truth: templates/admin_users.templ (create form, user cards,
|
||
last-admin guards), templates/profile_form.templ + profile_modal.templ
|
||
(admin edit fields), internal/router/auth.go (admin user endpoints),
|
||
internal/router/frontend.go (profile-modal route), user delete cascade
|
||
(reading data is owned by the account and goes with it). Re-verify
|
||
against these when the page changes. -->
|
||
|
||
# Users
|
||
|
||
User Management is where accounts are created, roles are assigned, and
|
||
accounts are removed. Changes here are immediate — there is no approval
|
||
flow.
|
||
|
||
## Creating an account
|
||
|
||
**+ Create User** opens the creation form (it stays hidden until clicked,
|
||
so the page doesn't shout account creation at you — and so admins can
|
||
still create accounts even when public self-registration is switched off
|
||
in [Settings](settings.md) → Public Registration).
|
||
|
||
Fields: **Username** (3–50 characters), **Email**, **Password** plus a
|
||
confirm, optional **First name** / **Last name**, and a **Role** of User
|
||
or Admin. The **Password Requirements** list is generated from the
|
||
password rules currently configured in Settings — the same rules users
|
||
face when changing their own passwords — and the **Create User** button
|
||
stays disabled until everything validates.
|
||
|
||
## The user cards
|
||
|
||
Every account renders as a card: username (with a **You** badge on your
|
||
own), email, the creation date shown in your timezone, and the controls:
|
||
|
||
### Role
|
||
|
||
A dropdown — **User** or **Admin** — that applies the moment you change
|
||
it. One guard exists: the **last admin cannot be demoted** (the dropdown
|
||
disables itself with that explanation while only one admin exists).
|
||
|
||
Admins see and use the entire Administration section — libraries,
|
||
scans, settings, this page.
|
||
|
||
### Edit
|
||
|
||
Opens an **Edit User Profile** modal with the same fields the user
|
||
controls on their own profile — username, email, first/last name,
|
||
**Theme**, **Default Playback Speed**, **Resume Rewind** — plus the Role
|
||
dropdown, and a **Change Password** section. The admin version doesn't
|
||
ask for the user's current password (only the user's own profile does).
|
||
|
||
### Delete
|
||
|
||
Removes the account permanently — and with it everything the account
|
||
owns: devices, sessions, and reading data (progress, annotations,
|
||
collections). The confirm dialog makes the irreversibility explicit.
|
||
Same last-admin guard as the role dropdown: the final admin cannot be
|
||
deleted.
|
||
|
||
## Roles, briefly
|
||
|
||
- **User** — browses, reads, listens, syncs devices; sees only the
|
||
libraries visible to them (visibility is set per-library on the
|
||
[Libraries](libraries.md) page).
|
||
- **Admin** — everything a user has, plus the Administration section:
|
||
libraries and scanning, users, system settings, hash conflicts,
|
||
podcasts maintenance.
|