# fluentform/3.6.42/app/Modules/Acl/RoleManager.php

Fluent Forms – Customizable Contact Forms, Survey, Quiz, &amp; Conversational Form Builder, version 3.6.42. 105 lines.

- Page: https://pluginprobe.com/plugins/fluentform/3.6.42/code/app/Modules/Acl/RoleManager.php
- Raw: https://pluginprobe.com/plugins/fluentform/3.6.42/raw/app/Modules/Acl/RoleManager.php
- Modified: 2020-06-18T18:27:22+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/fluentform/3.6.42/code/app/Modules/Acl/RoleManager.php#L10-L20`.

```php
<?php

namespace FluentForm\App\Modules\Acl;

class RoleManager
{
    public function getRoles() {
        if(!current_user_can('manage_options')) {
            wp_send_json_success(array(
                'capability' => array(),
                'roles'      => array()
            ), 200);
        }

        $roles = \get_editable_roles();
        $formatted = array();
        foreach ($roles as $key => $role) {
            if($key == 'administrator') {
                continue;
            }
            if($key != 'subscriber') {
                $formatted[] = array(
                    'name' => $role['name'],
                    'key'  => $key
                );
            }
        }

        $capability = get_option('_fluentform_form_permission');

        if (is_string($capability)) {
            $capability = [];
        }

        wp_send_json_success(array(
            'capability' => $capability,
            'roles'      => $formatted
        ), 200);
    }

    public function setRoles() {
        if(current_user_can('manage_options')) {
            $capability = isset($_REQUEST['capability']) ? $_REQUEST['capability'] : [];
            update_option('_fluentform_form_permission', $capability, 'no');
            wp_send_json_success( array(
                'message' => __('Successfully saved the role(s).', 'fluentform')
            ), 200 );
        } else {
            wp_send_json_error(array(
                'message' => __('Sorry, You can not update permissions. Only administrators can update permissions', 'fluentform')
            ), 423);
        }
    }

    public function verifyPermissionSet()
    {
        $availablePermissions = Acl::getPermissionSet();
        $currentCapability = $this->currentUserFormFormCapability();
        if(!$currentCapability) {
            return;
        }

        // Give permission to internal issues
        foreach ($availablePermissions as $permission) {
            add_filter('fluentform_verify_user_permission_'.$permission, function ($allowed) {
                return true;
            });
        }

        // Give permission to menu items
        add_filter('fluentform_dashboard_capability', function ($capability) use ($currentCapability) {
            return $currentCapability;
        });

        add_filter('fluentform_settings_capability', function ($capability) use ($currentCapability) {
            return $currentCapability;
        });
    }

    public function currentUserFormFormCapability() {

        if(current_user_can('manage_options')) {
            return 'manage_options';
        }
        if(!is_user_logged_in()) {
            return false;
        }

        $capabilities = get_option('_fluentform_form_permission');
        if (is_string($capabilities)) {
            $capabilities = [];
        }
        if(!$capabilities) {
            return;
        }
        foreach ($capabilities as $capability) {
            if(current_user_can($capability)) {
                return $capability;
            }
        }
        return false;
    }

}

```
