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