Skip to content

Roles and permissions

Four roles, and what each one can reach.

1 min read

Access is role-based, with policies enforcing it per record rather than only per screen.

Role Reaches
super_admin Everything, including managing other admins.
admin Products, plans, versions, orders, subscriptions, users, redeem codes, referrals, refunds, analytics, settings.
support Read orders and subscriptions, manage activated domains. Cannot edit products, plans, or settings.
customer Their own subscriptions, downloads, orders, referral stats, and profile.

The support role#

This is the one worth using properly. Most support work is answering “what is this customer entitled to?” and moving a license from an old domain to a new one — and the support role is scoped to exactly that. A contractor with this role cannot change your pricing, touch your Paddle credentials, or delete a product.

The two panels#

Admin, support, and super admin land on /admin. Customers land on /panel. The router sends each user to the right one after sign-in, and the middleware on each prefix keeps them there.

Policies#

Seven policy classes back the roles — for orders, plans, products, redeem codes, referrals, refund requests, and subscriptions. This is why a customer cannot reach another customer’s subscription by editing an ID in the URL: the check is on the record, not on the menu.

Assigning roles#

Admin → Users → Edit. Buyers get the customer role automatically when their account is created.

Adding an admin from the command line#

php artisan admin:create

Useful when you have locked yourself out, or on a server where you would rather not create the first account through a browser.