Admin Panel

EasyAdmin backoffice for managing users and subscriptions

Admin Panel

The admin panel is built with EasyAdmin and provides a backoffice for managing users and subscriptions.

What's Included

  • User management with search, filter, and role editing
  • Subscription management with status tracking
  • Manual GitHub organization invite action
  • Secure form-based login with rate limiting

Access

The admin panel is available at /admin. You must have the ROLE_ADMIN role.

Creating an Admin User

  1. Register a user through the API
  2. Promote them to admin:
docker compose exec php bin/console app:user:promote-admin user@example.com

The admin panel uses form-based login at /admin/login — separate from the API's JWT auth. Login is rate-limited to 5 attempts per 15 minutes.

Users

Available Fields

FieldTypeEditableNotes
nameTextNoDisplay only
emailEmailNoDisplay only
emailValidatedBooleanNoShown as icon
providerTextNoemail, google, apple
rolesChoiceYesROLE_USER, ROLE_ADMIN
createdAtDateTimeNoDisplay only

Search by name or email. Filter by email, name, email validated status, provider, or role.

Users cannot be created or deleted from the admin panel — they must register through the API.

Subscriptions

Available Fields

FieldTypeEditableNotes
userIdTextNoDisplay only
planTypeTextNoFree, Starter, Pro
paymentTypeTextNoRecurring or One-Time
statusChoiceYesActive, Past Due, Canceled, Expired
billingIntervalTextNoMonthly or Yearly
stripeCustomerIdTextNoVisible on detail page
githubAddedBooleanNoWhether user was invited to GitHub

Filter by status, plan type, billing interval, payment type, or GitHub invite status.

GitHub Invite Action

Available on the Users list and detail pages. This action manually invites (or re-invites) a user to your GitHub organization.

The action verifies the user has a paid plan before sending the invite. Useful for re-inviting users whose initial automatic invite failed.