Skip to main content

Permissions

A permission system is available in ClientXCMS to manage user access to certain features. This system is based on permissions that are assigned to roles. Each role can have multiple permissions.

Default Permissions

Here is the list of default permissions in ClientXCMS.

Administrative Permissions

NameDescription
admin.manage_licenseManage licenses
admin.manage_gatewaysManage payment gateways
admin.manage_rolesManage roles
admin.manage_staff_profileManage staff profiles
admin.manage_staffManage staff

Billing Permissions

NameDescription
admin.show_invoicesView invoices
admin.create_invoicesCreate invoices
admin.manage_invoicesManage invoices
admin.show_payment_methodsView payment methods

Customer Permissions

NameDescription
admin.manage_customersManage customers
admin.show_emailsDisplay email messages
admin.autologin_customerAutomatic login as customer
admin.dashboard_last_loginView last logins in dashboard
admin.show_customersView customers

Support Permissions

NameDescription
admin.manage_departmentsManage departments
admin.manage_ticketsManage tickets
admin.close_ticketsClose tickets
admin.reply_ticketsReply to tickets
admin.create_ticketsCreate tickets

Metadata Permissions

NameDescription
admin.manage_metadataManage metadata
admin.show_metadataView metadata

Service Permissions

NameDescription
admin.manage_servicesManage services
admin.show_servicesView services
admin.deliver_servicesDeliver services

Store Permissions

NameDescription
admin.manage_productsManage products
admin.manage_groupsManage product groups
admin.manage_couponsManage coupons
admin.earn_pageAccess earnings page

Technical Permissions

NameDescription
admin.manage_extensionsManage extensions
admin.manage_databaseManage database
admin.show_logsView logs
admin.manage_serversManage servers
admin.manage_personalizationManage personalization

Permission Constants

You can also use permissions as constants:

MANAGE_EXTENSIONS = 'admin.manage_extensions';

MANAGE_PERSONALIZATION = 'admin.manage_personalization';

MANAGE_SETTINGS = 'admin.manage_settings';

ALLOWED = 'admin.allowed';

Example:

if (staff_has_permission(Permission::MANAGE_EXTENSIONS)) {
// Code
}
Information

The admin.manage_extensions permission is conventionally used for all extension pages.

Creating a Permission

To create a permission, you must add a new entry in the permissions.json file of your extension. Here is an example permissions.json file:

[
{
"name": "admin.fund",
"label": "permissions.fund",
"group": "permissions.store"
},
],

Where name is the permission name, label is the permission translation in the language file, and group is the permission group.

You must then seed the database with the following command:

php artisan db:seed --class=PermissionsSeeder

Then you can use the permission in your code like this:

if (staff_has_permission('admin.fund')) {
// Code
}

or in Blade:

@if (staff_has_permission('admin.fund'))
// Code
@endif

Available Groups

Here is the list of available permission groups:

  • permissions.store
  • permissions.technical
  • permissions.admin
  • permissions.billing
  • permissions.customers
  • permissions.metadata
  • permissions.services
  • permissions.helpdesk