Not released yet. PeltyCMS is under development and not released yet; these docs describe the upcoming release and may change.
PeltyCMS User docs
User docsDevelopers
v0.1.0

User docs/Administrator guide

Staff security

PagePathWhat it is for
Security/admin/securityCaptcha, SSO, IP rules, passwords
Staff & roles/admin/staffStaff and roles
Fraud/admin/fraudFraud checks
GDPR/admin/gdprGDPR exports and erasure
Login history/admin/login-historyLogin history
Sessions/admin/sessionsYour active sessions

#Roles and permissions

Staff accounts get roles in Admin → Security → Staff; each role is a set of permissions such as tickets.manage or gateways.manage. Every admin API call checks the permission it needs.

#Two-factor authentication

Every account can enable TOTP two-factor authentication (an authenticator app) with one-time backup codes, and passkeys. When Require 2FA for staff is on (Admin → Security → Staff, stored as security.staff_require_2fa), staff without 2FA keep client access only until they enrol.

FieldTypeRequiredDescription
enabledboolyes
client_idStringyes
api_hostStringyes
scopeStringyesstaff or all.
secret_encStringnoSealed client secret (base64), never returned.

The client secret is stored encrypted and never returned. Duo redirects back to {public URL}/auth/duo/callback, so PELTY_PUBLIC_URL must be right.

#Security policy

Admin → Security → Security sets the policy below. Empty values mean "off".

FieldTypeRequiredDescription
password_min_lengthusizeyes
require_upperboolyes
require_lowerboolyes
require_digitboolyes
require_symbolboolyes
session_idle_minutesOption<i64>no
session_absolute_hoursOption<i64>no
login_rate_per_minuteOption<u32>no
admin_reauth_minutesOption<i64>noStaff must re-enter their password for sensitive changes when the last full authentication is older than this (step-up / sudo mode).
password_max_age_daysOption<i64>noStaff passwords expire after this many days (must be changed).
login_alertsboolyesAudit + notify on staff sign-ins from a new IP address.

#Step-up (sudo mode)

With admin_reauth_minutes set, staff must re-enter their password (or use a passkey) before a change guarded by one of these permissions when their last full sign-in is older than that:

Reading is never blocked; only writes (POST, PUT, PATCH, DELETE) ask for it. API keys are not affected.

#IP rules

Admin → Security → Security keeps two kinds of IP rule (single addresses or CIDR ranges, optionally expiring):

Behind a reverse proxy, make sure the real client address reaches PeltyCMS, or every request looks like it comes from the proxy.

#Sessions, sign-in history and audit

Sessions lists and revokes active sessions, Login history shows sign-ins, and Admin → System & settings → Audit records every staff change. With login_alerts on, a staff sign-in from a new IP address is audited and notified. Staff can sign in as a client (impersonation) for support; it is audited and has a way back.

#Single sign-on

Staff and clients can sign in with OAuth/OIDC providers (addons of kind sso) and SAML (Admin → Addons & integrations → SAML). PeltyCMS can also act as an OAuth provider for other apps (OAuth clients).