--- title: Users --- ### Users Users are extensible stream entries that can be associated with multiples `roles`. Users have their own `permissions` that merge with those inherited from the `roles` they belong to. #### User Fields Below is a list of `fields` in the `users` stream. Fields are accessed as attributes: $user->email; Same goes for decorated instances in Twig: {{ user.email }} ###### Fields
Key Type Description
email email The login email address.
username text The login username.
password text The hashed login password.
roles multiple relationship The roles the user has.
display_name text The publicly displayable name.
first_name text The real first name.
last_name text The real last name.
permissions textarea The serialized user permission array.
last_login_at datetime The last login datetime.
last_activity_at text The datetime for the last action made by the user.
ip_address text The last IP address that accessed the user account.
##### Custom User Fields Custom user fields assigned through the control panel are assigned directly to the `users` stream and can be accessed directly from the user object. $user->favorite_color; And in Twig: {{ user.favorite_color }} #### User Interface This section will go over the features of the `\Anomaly\UsersModule\User\Contract\UserInterface` class. ##### UserInterface::hasRole() The `hasRole` method ensures that the user has the given `role`. ###### Returns: `boolean` ###### Arguments
Key Required Type Default Description
$role true string none The role ID, slug, or interface.
###### Example if (auth()->user()->hasRole('admin') { echo "User is an admin!"; } ###### Twig {% if auth_user().hasRole('admin') %} User is an admin! {% endif %} ##### UserInterface::hasAnyRole() The `hasAnyRole` method ensures that the user has at least one of the provided roles. ###### Returns: `boolean` ###### Arguments
Key Required Type Default Description
$roles true mixed none An array of role IDs or slugs. A collection of roles can also be passed.
###### Example if (auth()->user()->hasAnyRole(['admin', 'manager'])) { echo 'Hello ' . $user->display_name; } ###### Twig {% if auth().user().hasAnyRole(['admin', 'manager'])) %} Hello {{ auth_user().display_name }} {% endif %} ##### UserInterface::isAdmin() The `isAdmin` method returns if the user has the `admin` role or not. ###### Returns: `boolean` ###### Example if ($user->isAdmin()) { echo "Hi Admin."; } ###### Twig Hello {{ auth_user().isAdmin() ? 'admin' : 'user' }} ##### UserInterface::hasPermission() The `hasPermission` method verifies that the user has the `permission`. ###### Returns: `boolean` ###### Arguments
Key Required Type Default Description
$permission true string none The permission string.
$checkRoles false boolean true Check the users roles for the permission too.
###### Example if (auth()->user()->hasPermission('vendor.module.example::example.test')) { // So something } ###### Twig {% if auth_user().hasPermission('vendor.module.example::example.test')) %} {# So something #} {% endif %} ##### UserInterface::hasAnyPermission() The `hasAnyPermission` method verifies that the user has at least one of the given permissions. ###### Returns: `boolean` ###### Arguments
Key Required Type Default Description
$permissions true array none The array of permissions.
$checkRoles false boolean true Check the users roles for the permission too.
###### Example $hasPermission = auth()->user()->hasAnyPermission( ['vendor.module.example::example.test', 'vendor.module.example::widget.example'] ); if ($hasPermission) { // Do something } ###### Twig {% set hasPermission = auth_user().hasAnyPermission( ['vendor.module.example::example.test', 'vendor.module.example::widget.example'] ) %} {% if hasPermission %} {# Do something #} {% endif %} #### User Presenter This section will go over the `\Anomaly\UsersModule\User\UserPresenter` class that's returned in the view layer. ##### UserPresenter::name() The `name` method returns the concatenated first and last name. ###### Returns: `string` ###### Example $decorated->name(); ###### Twig Hi {{ user().name() }} ##### UserPresenter::gravatar() The `gravatar` method returns a Gravatar image URL for the user. ###### Returns: `string` ###### Arguments
Key Required Type Default Description
$parameters true array none Gravatar URL parameters.
###### Example $decorated->avatar(['d' => 'mm']); ###### Twig {{ img(user().gravatar({'d': 'mm'})).class('img-rounded')|raw }} #### User Repository The `\Anomaly\UsersModule\User\Contract\UserRepositoryInterface` class helps you retrieve users from the database. ##### UserRepositoryInterface::findByEmail() The `findByEmail` method finds a user by their email. ###### Returns: `\Anomaly\UsersModule\User\Contract\UserInterface` or `null` ###### Arguments
Key Required Type Default Description
$email true string none The users email.
###### Example $user = $repository->findByEmail('example@domain.com'); ##### UserRepositoryInterface::findByUsername() The `findByUsername` method finds a user by their username. ###### Returns: `\Anomaly\UsersModule\User\Contract\UserInterface` or `null` ###### Arguments
Key Required Type Default Description
$username true string none The username of the user.
###### Example $user = $repository->findByUsername('ryanthepyro'); ##### UserRepositoryInterface::findByCredentials() The `findByCredentials` method finds a user by their login field and password. ###### Returns: `\Anomaly\UsersModule\User\Contract\UserInterface` or `null` ###### Arguments
Key Required Type Default Description
$credentials true array none The credentials array containing email/username and password.
###### Example $user = $repository->findByCredentials(['email' => 'example@domain.com', 'password' => 'secret password']);