Admin Panel
Inhalt
The admin panel provides full control over the instance — users, content, appearance, legal pages, and settings. It is accessible only to accounts with the Admin role.
Accessing Admin
Navigate to /admin while logged in as an Admin. If your account does not have the Admin role, you will see a 403 error. See Auth & Users — Admin Bootstrap for first-run setup.
Admin Sections
| Section | Path | Description |
|---|---|---|
| Dashboard | /admin |
Overview stats: total videos, users, storage used, recent activity |
| Users | /admin/users |
Manage accounts — roles, bans, email lookup |
| Videos | /admin/videos |
Full video list with bulk actions (hide, delete, change visibility) |
| Channels | /admin/channels |
Channel directory management, feature/unfeature |
| Theme | /admin/theme |
6-layer live theme editor |
| Legal | /admin/legal |
Edit Impressum, Datenschutz, AGB page content |
| Settings | /admin/settings |
Instance name, registration toggle, upload limits |
| Reports | /admin/reports |
User-submitted report queue |
Theme Editor
The theme editor at /admin/theme provides a live, no-reload interface for customizing every visual property of the instance.
Quick workflow:
- Open
/admin/theme - Pick a built-in preset as your starting point (e.g.
itsweber-dark) - Use the colorpicker and sliders to adjust semantic tokens (brand color, background, text, radii)
- Switch to the Custom CSS tab for freeform overrides
- Rearrange homepage blocks in the Layout tab
- Click Save — changes are live for all visitors immediately
For full documentation of the 6-layer system, token mappings, and logo filter presets, see Theming System.
Legal Templates
The instance's legal pages are editable from /admin/legal. Three pages are available:
| Page | Path | Description |
|---|---|---|
| Impressum | /impressum |
German legal imprint (required by law for DE instances) |
| Datenschutzerklarung | /datenschutz |
Privacy policy / GDPR statement |
| AGB | /agb |
Terms of service |
Each template supports {{placeholders}} that are filled from instance settings at render time:
| Placeholder | Filled from |
|---|---|
{{instance_name}} |
Settings → Instance Name |
{{base_url}} |
BASE_URL environment variable |
{{operator_name}} |
Settings → Operator Name |
{{operator_email}} |
Settings → Operator Email |
{{operator_address}} |
Settings → Operator Address |
Templates are saved as Markdown and rendered to HTML. If a page is left blank, it shows a "Not yet configured" notice to visitors.
User Management
From /admin/users:
- Search by email, username, or user ID
- View profile — registration date, last login, role, video count
- Change role — promote to Moderator, Creator, or Admin; demote back to Viewer
- Ban / suspend — banned users cannot log in; their content remains visible (or can be bulk-hidden)
- Delete account — permanently removes the user record; their videos can be reassigned or deleted
Role changes take effect on the user's next request (no forced logout required — the session re-checks role on each privileged action).
Moderation Workflow
Reports submitted by users appear in /admin/reports.
Report lifecycle:
- A viewer clicks "Report" on a video or comment
- They select a reason (spam, misinformation, NSFL, copyright, other) and optionally add a note
- The report appears in the queue with status
open - A Moderator or Admin reviews it and takes one of:
- Hide — content is hidden from public view, creator is notified
- Delete — content is permanently removed
- Dismiss — report is closed, no action taken
- Each action is logged with a reason and the moderator's user ID
- Reporter receives a notification (if email is configured) when the report is resolved
Bulk actions are available for selecting multiple reports at once.
© Benjamin Weber · ITSWEBER — play.itsweber.net · GitHub