Skip to content
View as Markdown

Permission Manager

FluentCrm\App\Services\PermissionManager

The PermissionManager class manages FluentCRM capabilities for WordPress users. It provides methods to check, assign, and retrieve permissions. WordPress Administrators (manage_options) automatically have all FluentCRM permissions.

php
use FluentCrm\App\Services\PermissionManager;

Capabilities Reference

FluentCRM registers 16 custom capabilities organized by group:

Dashboard

CapabilityDescription
fcrm_view_dashboardView the FluentCRM dashboard

Contacts

CapabilityDescriptionDepends On
fcrm_read_contactsView contact list and profiles
fcrm_manage_contactsCreate, edit, and import contactsfcrm_read_contacts
fcrm_manage_contacts_deleteDelete contactsfcrm_read_contacts
fcrm_manage_contacts_exportExport contactsfcrm_read_contacts

Segments (Tags, Lists, Companies)

CapabilityDescriptionDepends On
fcrm_manage_contact_catsCreate/update tags, lists, companies, segmentsfcrm_read_contacts
fcrm_manage_contact_cats_deleteDelete tags, lists, companies, segmentsfcrm_read_contacts

Emailing

CapabilityDescriptionDepends On
fcrm_read_emailsView campaigns and email logs
fcrm_manage_emailsCreate, edit, and send emailsfcrm_read_emails
fcrm_manage_email_deleteDelete emails and campaigns
fcrm_manage_email_templatesManage email templates

Forms

CapabilityDescription
fcrm_manage_formsManage opt-in forms

Automations

CapabilityDescriptionDepends On
fcrm_read_funnelsView automations
fcrm_write_funnelsCreate and edit automationsfcrm_read_funnels
fcrm_delete_funnelsDelete automationsfcrm_read_funnels

Settings

CapabilityDescription
fcrm_manage_settingsManage CRM settings

INFO

The Depends On column indicates which capabilities must also be assigned for the permission to work correctly.

Methods

currentUserCan($permission)

Checks whether the current user holds a specific FluentCRM capability. Administrators always return true.

  • Parameters: string $permission — One of the capability slugs above
  • Returns: bool
  • Filter: fluentcrm_current_admin_can (for administrators only)
php
if (PermissionManager::currentUserCan('fcrm_manage_contacts')) {
    // User can create/edit contacts
}

WARNING

In the free version of FluentCRM, only administrators have access. The currentUserCan() method returns false for non-admins unless FluentCampaign Pro is active.

currentUserPermissions($cached = true)

Returns all FluentCRM permissions held by the currently logged-in user. Results are statically cached within the request.

  • Parameters: bool $cached (default: true) — Set to false to force re-evaluation
  • Returns: array — Array of capability strings
php
$permissions = PermissionManager::currentUserPermissions();
// ['fcrm_read_contacts', 'fcrm_manage_contacts', ...]

getUserPermissions($user = false)

Returns the FluentCRM permissions for a specific user. Administrators receive all permissions plus 'administrator'.

  • Parameters: int|WP_User|false $user — User ID, WP_User object, or false
  • Returns: array
  • Filter: fluent_crm/user_permissions
php
$permissions = PermissionManager::getUserPermissions(5);

attachPermissions($user, $permissions)

Assigns a set of FluentCRM capabilities to a WordPress user. First removes all existing FluentCRM capabilities, then adds the specified ones. Skips administrators (they always have all permissions).

  • Parameters: int|WP_User $user, array $permissions — Array of capability strings
  • Returns: WP_User|false
php
PermissionManager::attachPermissions($userId, [
    'fcrm_read_contacts',
    'fcrm_manage_contacts',
    'fcrm_read_emails'
]);

getReadablePermissions()

Returns the full permission definitions with titles, dependency info, and group assignments.

  • Returns: array — Keyed by capability slug
  • Filter: fluent_crm/readable_permissions
php
$permissions = PermissionManager::getReadablePermissions();
/*
[
    'fcrm_read_contacts' => [
        'title'   => 'Contacts Read',
        'depends' => [],
        'group'   => 'contacts'
    ],
    'fcrm_manage_contacts' => [
        'title'   => 'Contacts Add/Update/Import',
        'depends' => ['fcrm_read_contacts'],
        'group'   => 'contacts'
    ],
    ...
]
*/

pluginPermissions()

Returns a flat array of all registered FluentCRM capability strings.

  • Returns: array
  • Filter: fluent_crm/plugin_permissions
php
$allCaps = PermissionManager::pluginPermissions();
// ['fcrm_view_dashboard', 'fcrm_read_contacts', 'fcrm_manage_contacts', ...]