Roles

Roles are groups of users that define what the users has access to via role permissions. Roles can also be used as an inclusive test like i.e. "Does this user have the foo role?".

Role Fields

Below is a list of fields in the roles stream. Fields are accessed as attributes:

$role->slug;

Same goes for decorated instances in Twig:

{{ role.slug }}
Fields
Key Type Description
name text The name of the role.
slug slug The slug used for API access.
description textarea A description for the role.
permissions textarea A serialized array of role permissions.

Role Interface

This section will go over the features of the \Anomaly\UsersModule\Role\Contract\RoleInterface class.

RoleInterface::hasPermission()

The hasPermission method verifies that the role has the permission.

Returns: boolean
Arguments
Key Required Type Default Description
$permission true string none The permission string.
Example
if ($role->hasPermission('vendor.module.example::example.test')) {
    // Do something
}
Twig
{% if role.hasPermission('vendor.module.example::example.test') %}
    {# Do something #}
{% endif %}
RoleInterface::hasAnyPermission()

The hasAnyPermission method verifies that the role has at least one of the given permissions.

Returns: boolean
Arguments
Key Required Type Default Description
$permissions true array none The array of permissions.
Example
$hasPermission = $role->hasAnyPermission(
    ['vendor.module.example::example.test', 'vendor.module.example::widget.example']
);

if ($hasPermission) {
    // Do something
}
Twig
{% set hasPermission = role.hasAnyPermission(
    ['vendor.module.example::example.test', 'vendor.module.example::widget.example']
) %}

{% if hasPermission %}
    {# Do something #}
{% endif %}

Role Repository

The \Anomaly\UsersModule\Role\Contract\RoleRepositoryInterface class helps you retrieve roles from the database.

RoleRepositoryInterface::allButAdmin()

The allButAdmin method returns all roles but the admin one.

Returns: \Anomaly\UsersModule\Role\RoleCollection
Example
$roles = $repository->allButAdmin();
RoleRepositoryInterface::findBySlug()

The findBySlug method returns a role by it's slug.

Returns: \Anomaly\UsersModule\Role\Contract\RoleInterface or null
Arguments
Key Required Type Default Description
$slug true string none The slug of the role.
Example
$guest = $repository->findBySlug('guest');
RoleRepositoryInterface::findByPermission()

The findByPermission method returns all roles with the permission.

Returns: \Anomaly\UsersModule\Role\RoleCollection
Arguments
Key Required Type Default Description
$permission true string none The permission string.
Example
$roles = $repository->findByPermission('example.module.test::example.test');

// Search for partial-match permissions.
$roles = $repository->findByPermission('example.module.test::*');
RoleRepositoryInterface::updatePermissions()

The updatePermissions method updates the permissions for a role.

Returns: \Anomaly\UsersModule\Role\Contract\RoleInterface
Arguments
Key Required Type Default Description
$role true object none The role instance.
$permissions true array none The array of role permissions.
Example
$repository->updatePermissions(
    $role,
    [
        'example.module.test::example.test',
        'example.module.test::example.foo'
    ]
);