Skip to content

Admin Guide

The admin panel is available at /admin and is visible only to users with role = admin. The first admin is created during first-run setup. Additional admins are promoted via Admin → Users → Edit User → Role → Admin.

Dashboard

Shows four summary stats:

StatDescription
Total usersAll registered accounts
OAuth appsAll registered applications
Verified domainsDomains that passed DNS verification
Active tokensNon-expired OAuth access tokens

Settings

Settings are grouped into tabs. All changes take effect immediately — no redeployment needed.

General

  • Site name — shown in the browser tab and email templates
  • Site description — shown on the login page
  • Site icon URL — link to a PNG/SVG logo
  • Allow registration — toggle self-registration on/off. When disabled, only admins can create accounts (not yet implemented — contact the instance owner)
  • Require email verification — users must click the verification link before logging in

Appearance

  • Accent color — hex color that drives the entire FluentUI theme. Changes are reflected immediately after saving.
  • Custom CSS — injected as a <style> block on every page. Useful for branding tweaks without forking the UI.

Security / Sessions

  • Session TTL (days) — how long a login session lasts
  • Access token TTL (minutes) — OAuth access token lifetime
  • Refresh token TTL (days) — OAuth refresh token lifetime

Bot Protection

Choose one captcha provider:

ProviderNotes
NoneNo bot protection
Cloudflare TurnstileRequires a Turnstile site key + secret. Free tier available.
hCaptchaRequires an hCaptcha site key + secret.
reCAPTCHA v3Requires a Google reCAPTCHA v3 site key + secret. Invisible.
Proof-of-WorkNo third-party service. Difficulty 20 = ~0.1–2 s on modern hardware.

Social Login

Enter the client ID and secret for each provider. Leave both fields blank to disable that provider. See Configuration for the callback URLs to register with each provider's developer console.

Email

  • Email providernone, resend, or mailchannels
  • Email API key — the API key for Resend or Mailchannels
  • From address — the sender address for verification emails

Domain re-verification

  • Domain reverify interval (days) — how often Prism re-checks DNS TXT records for verified domains. Default is 30 days.

Users

The user table is searchable and sortable. Click a user row to open the detail view.

Actions on a user

ActionEffect
Change roleToggle between user and admin
DeactivatePrevents login; existing tokens remain valid until expiry
Mark email verifiedManually verify without sending an email
DeletePermanently deletes the user and all their data (cascades to sessions, apps, connections, etc.)

Deleting a user is irreversible. Their OAuth apps are also deleted, which will break any third-party integrations that used those apps.

Applications

The app table lists all OAuth apps across all users, including:

  • Owner username
  • Verification status
  • Active/inactive status

App moderation

ActionEffect
VerifyMarks the app with a verified badge visible on the consent screen
DeactivatePrevents the app from completing new authorization flows. Existing tokens continue to work.

Verified apps are shown with a checkmark on the consent screen, indicating they have been reviewed by an admin.

Audit Log

The audit log is a paginated, append-only list of significant events:

EventTriggered by
user.registerSuccessful registration
user.loginSuccessful login
user.login.failedFailed login attempt
user.logoutLogout
user.deleteAccount deletion
totp.enabledTOTP setup completed
totp.disabledTOTP disabled
passkey.registeredNew passkey added
passkey.deletedPasskey removed
oauth.authorizeUser approved an OAuth app
oauth.tokenToken issued
admin.config.updateSite config changed
admin.user.updateAdmin changed a user
admin.user.deleteAdmin deleted a user

Each entry records the acting user_id, the action, optional resource_type / resource_id, a metadata JSON object, and the ip_address.

Released under the GPL-3.0 License.