All checks were successful
CI - Build Tonehaus Docker image / tonehaus-ci-build (push) Successful in 1m57s
46 lines
1.9 KiB
Markdown
46 lines
1.9 KiB
Markdown
# Admin & Settings
|
|
|
|
## Access control
|
|
- All `/admin/*` pages require authentication; unauthorized visitors get redirected through `/login`, which opens the auth modal automatically.
|
|
- `ROLE_MODERATOR` grants dashboard + user list access.
|
|
- `ROLE_ADMIN` adds settings access and moderator promotion/demotion abilities.
|
|
|
|
## Site dashboard (ROLE_MODERATOR)
|
|
- URL: `/admin/dashboard`
|
|
- Shows total counts plus the most recent reviews and albums so staff can moderate activity quickly.
|
|
|
|
## User management (ROLE_MODERATOR)
|
|
- URL: `/admin/users`
|
|
- Table columns:
|
|
- Name/email/roles + album/review counts (queried via aggregates).
|
|
- Action buttons always render; disabled buttons show tooltips describing why (e.g., "Administrators cannot be deleted").
|
|
- Moderators:
|
|
- Create new accounts via the inline form without logging themselves out.
|
|
- Delete standard users or other moderators (except themselves).
|
|
- Admins:
|
|
- Toggle moderator role (Promote/Demote) for non-admin accounts.
|
|
- Cannot delete or demote other admins—admin privileges supersede moderator status.
|
|
|
|
## Site settings (ROLE_ADMIN)
|
|
- URL: `/admin/settings`
|
|
- Form persists Spotify Client ID/Secret in the DB (no restart needed).
|
|
- Toggle “Allow self-service registration” to pause public sign-ups while keeping `/admin/users` creation available to staff.
|
|
- The setting syncs with the `APP_ALLOW_REGISTRATION` environment variable each time Symfony boots (change the env value and restart to enforce). UI changes persist while the process runs.
|
|
- CSRF + role guards prevent unauthorized updates.
|
|
|
|
## User management
|
|
- Promote an admin:
|
|
```bash
|
|
docker compose exec php php bin/console app:promote-admin user@example.com
|
|
```
|
|
- Promote a moderator:
|
|
```bash
|
|
docker compose exec php php bin/console app:promote-moderator user@example.com
|
|
```
|
|
|
|
## Appearance
|
|
- `/settings` provides a dark/light mode toggle.
|
|
- Preference saved in a cookie; applied via `data-bs-theme`.
|
|
|
|
|