Radical Design Course by Jack McDade

From the creator of Statamic

Learn how to make your websites standout and be remembered.

For a software dev like me who has no idea how to create a cute hand-drawn dashed line, this course just 100% works.

— Ira Zayats, Developer

User Repository

To work with the User Repository, use the following Facade:

use Statamic\Facades\User;

Methods

Methods Description
all() Get all Users
current() Get current User
find($id) Get User by id
findByEmail($email) Get User by email
findByOAuthID($provider, $id) Get User by an ID from an OAuth provider
findOrFail($id) Get User by id. Throws a UserNotFoundException when the user cannot be found.
query() Query Builder
make() Makes a new User instance

Querying

Get a user by ID

User::query()
->where('id', 'abc123')
->first();
 
// Or with the shorthand method
User::find('abc123');

When a user can't be found, the User::find() method will return null. If you'd prefer an exception be thrown, you may use the findOrFail method:

User::findOrFail('abc123');

Get a user by email

User::query()
->where('email', '[email protected]')
->first();
 
// Or with the shorthand method
User::findByEmail('[email protected]');

Get a user by OAuth ID

User::findByOAuthId('github', '123');

Get all super users

User::query()->where('super', true)->get();

Get the currently logged in user

User::current();

Creating

Start by making an instance of a user with the make method.
You need at least an email before you can save a user.

$user = User::make()->email('[email protected]');

You may call additional methods on the user to customize it further.

$user
->password('plaintext') // it will be hashed for you
->data(['foo' => 'bar']) // an array of data (front-matter)
->preferences($prefs) // array of preferences
->roles($roles) // array of roles
->groups($groups); // array of groups

Finally, save it.

$user->save();

Roles & Groups

In the example above, it demonstrates passing roles & groups as arrays to the ->roles() and ->groups() methods.

However, Statamic also provides a few convenience methods for assigning/removing/checking individual roles & groups:

$user->roles(); // Returns a collection of the user's roles
$user->roles(['role_1', 'role_2']); // Sets the user's roles (overrides any existing roles)
$user->assignRole('role_1'); // Assigns a role to the user
$user->removeRole('role_1'); // Removes a role from the user
$user->hasRole('role_2'); // Checks if the user has the provided role.
 
$user->groups(); // Returns a collection of the user's groups
$user->groups(['group_1', 'group_2']); // Sets the user's groups (overrides any existing groups)
$user->addToGroup('group_1'); // Adds the user to a group
$user->removeFromGroup('group_1'); // Removes the user from a group
$user->isInGroup('group_2'); // Checks if the user is part of a group
HR: Section
Learn More!

There is more to learn more in these related articles:

Fieldtypes

shipment-container
HR: Section
Docs feedback

Submit improvements, related content, or suggestions through Github.

Betterify this page →