siakad-itm/app/Actions/Fortify/AuthenticateUser.php
Yoga Pangestu 9c03876a71
Some checks failed
tests / ci (pull_request) Has been cancelled
feat: implement user status management with active/inactive toggle
2026-08-30 11:08:08 +07:00

33 lines
831 B
PHP

<?php
namespace App\Actions\Fortify;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\ValidationException;
use Laravel\Fortify\Fortify;
class AuthenticateUser
{
/**
* Resolve the user attempting to log in, rejecting inactive accounts.
*/
public function __invoke(Request $request): ?User
{
$user = User::where(Fortify::username(), $request->input(Fortify::username()))->first();
if (! $user || ! Hash::check($request->password, $user->password)) {
return null;
}
if (! $user->is_active) {
throw ValidationException::withMessages([
Fortify::username() => 'Akun Anda tidak aktif. Silakan hubungi administrator.',
]);
}
return $user;
}
}