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'
]
);