--- title: Roles --- ### 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' ] );