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