feat: enable user authentication via email or username in Fortify
This commit is contained in:
parent
9af62ff47c
commit
9b1a04c7a2
@ -4,8 +4,10 @@
|
|||||||
|
|
||||||
use App\Actions\Fortify\CreateNewUser;
|
use App\Actions\Fortify\CreateNewUser;
|
||||||
use App\Actions\Fortify\ResetUserPassword;
|
use App\Actions\Fortify\ResetUserPassword;
|
||||||
|
use App\Models\User;
|
||||||
use Illuminate\Cache\RateLimiting\Limit;
|
use Illuminate\Cache\RateLimiting\Limit;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Hash;
|
||||||
use Illuminate\Support\Facades\RateLimiter;
|
use Illuminate\Support\Facades\RateLimiter;
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
@ -38,6 +40,16 @@ public function boot(): void
|
|||||||
*/
|
*/
|
||||||
private function configureActions(): void
|
private function configureActions(): void
|
||||||
{
|
{
|
||||||
|
Fortify::authenticateUsing(function (Request $request) {
|
||||||
|
$user = User::where('email', $request->login)
|
||||||
|
->orWhere('username', $request->login)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if ($user && Hash::check($request->password, $user->password)) {
|
||||||
|
return $user;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
Fortify::resetUserPasswordsUsing(ResetUserPassword::class);
|
Fortify::resetUserPasswordsUsing(ResetUserPassword::class);
|
||||||
Fortify::createUsersUsing(CreateNewUser::class);
|
Fortify::createUsersUsing(CreateNewUser::class);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -45,7 +45,7 @@
|
|||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'username' => 'email',
|
'username' => 'login',
|
||||||
|
|
||||||
'email' => 'email',
|
'email' => 'email',
|
||||||
|
|
||||||
|
|||||||
@ -28,18 +28,18 @@ export default function Login({
|
|||||||
<>
|
<>
|
||||||
<div className="grid gap-6">
|
<div className="grid gap-6">
|
||||||
<div className="grid gap-2">
|
<div className="grid gap-2">
|
||||||
<Label htmlFor="email" required>Alamat Surel</Label>
|
<Label htmlFor="login" required>Alamat Surel atau Nama Pengguna</Label>
|
||||||
<Input
|
<Input
|
||||||
id="email"
|
id="login"
|
||||||
type="email"
|
type="text"
|
||||||
name="email"
|
name="login"
|
||||||
required
|
required
|
||||||
autoFocus
|
autoFocus
|
||||||
tabIndex={1}
|
tabIndex={1}
|
||||||
autoComplete="off"
|
autoComplete="off"
|
||||||
placeholder="johndoe@example.com"
|
placeholder="johndoe@example.com atau johndoe"
|
||||||
/>
|
/>
|
||||||
<InputError message={errors.email} />
|
<InputError message={errors.login} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="grid gap-2">
|
<div className="grid gap-2">
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user