Roles and permissions
Four roles, and what each one can reach.
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.