feat: inisialisasi project kit v2

This commit is contained in:
2026-05-21 15:57:29 +07:00
commit d4fd478e1f
271 changed files with 35300 additions and 0 deletions
+37
View File
@@ -0,0 +1,37 @@
<?php
namespace App\Actions\Auth;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\ValidationException;
class LoginAction
{
/**
* Execute the login action.
*
* @param array $credentials
* @return array
* @throws ValidationException
*/
public function execute(array $credentials): array
{
$user = User::where('email', $credentials['email'])->first();
if (!$user || !Hash::check($credentials['password'], $user->password)) {
throw ValidationException::withMessages([
'email' => [__('auth.failed')],
]);
}
$token = $user->createToken('auth_token')->plainTextToken;
return [
'user' => $user,
'token' => $token,
'roles' => $user->getRoleNames(),
'permissions' => $user->getAllPermissions()->pluck('name'),
];
}
}
+33
View File
@@ -0,0 +1,33 @@
<?php
namespace App\Actions\Users;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
class CreateUserAction
{
/**
* Execute the create user action.
*
* @param array $data
* @return User
*/
public function execute(array $data): User
{
$user = User::create([
'first_name' => $data['firstName'],
'last_name' => $data['lastName'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
'status' => $data['status'] ?? 'active',
'meta' => $data['meta'] ?? [],
]);
if (isset($data['roles'])) {
$user->assignRole($data['roles']);
}
return $user;
}
}