This commit is contained in:
ghassan committed 2026-08-04 11:26:25 +03:00
1 parent d0834df8df
commit 6dc35134fa
171 files changed
+19241 -49

No files matched your search

@@ -0,0 +1,15 @@
<?php
namespace App\Actions\Users;
use App\Models\User;
class AssignRoleAction
{
public function execute(User $user, string $role): User
{
$user->syncRoles([$role]);
return $user;
}
}
@@ -0,0 +1,31 @@
<?php
namespace App\Actions\Users;
use App\Models\User;
class CreateUserAction
{
/**
* @param array{name: string, username: string, email: string, password: string, role: string} $data
*/
public function execute(array $data, User $actor): User
{
$user = User::create([
'name' => $data['name'],
'username' => $data['username'],
'email' => $data['email'],
'password' => $data['password'],
'created_by' => $actor->id,
]);
// The DB default (false) applies, but isn't hydrated back onto this
// in-memory instance after insert — set it explicitly for the
// response/event payload built from this same object.
$user->two_factor_enabled = false;
$user->assignRole($data['role']);
return $user;
}
}
@@ -0,0 +1,13 @@
<?php
namespace App\Actions\Users;
use App\Models\User;
class DeleteUserAction
{
public function execute(User $user): void
{
$user->delete();
}
}
@@ -0,0 +1,19 @@
<?php
namespace App\Actions\Users;
use App\Models\User;
class UpdateUserAction
{
/**
* @param array{name?: string, username?: string, email?: string, password?: string} $data
*/
public function execute(User $user, array $data): User
{
$user->fill(array_filter($data, fn ($value) => $value !== null && $value !== ''));
$user->save();
return $user;
}
}