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 |
|---|---|---|
|
|
|
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 |
|---|---|---|---|---|
|
|
true |
string |
none |
The users email. |
Example
$user = $repository->findByEmail('[email protected]');
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' => '[email protected]', 'password' => 'secret password']);