Estoy usando Larave Jetstream livewire y quiero modificar el inicio de sesión.
iniciar sesión de tener un campo de entrada oculto "is_admin" con un valor inicial de 1
cuando un usuario envía el formulario de inicio de sesión, verifique el backend con is_admin
= 1 del campo de la tabla de la base de datos
estructura de la tabla: nombre, correo electrónico, contraseña, is_admin
es_admin = 0 o 1
Quiero verificar el indicador is_admin. Si las credenciales proporcionadas coinciden con el email
, password
y is_admin=1
, entonces solo el usuario puede iniciar sesión.
Creo que tiene la intención de personalizar la autenticación. Dado que está usando Jetstream, lo más probable es que esté usando Fortify listo para usar (de forma predeterminada).
Hay 2 formas. Estos son para ayudarlo a enviar datos adicionales desde su formulario de autenticación y no solo el campo oculto. Sin embargo, si el campo is_admin es el predeterminado, no creo que deba agregarlo como campo oculto. Podrías estar comprometido.
Ejemplo 1. Edite el modelo User.php y agregue un método de arranque Fortify::authenticateUsing
use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash; use Laravel\Fortify\Fortify; /** * Bootstrap any application services. * * @return void */ public function boot() { Fortify::authenticateUsing(function (Request $request) { $is_admin = $request->is_admin ?? 1; // Your code here ... Example for login in below $user = User::where('email', $request->email)->first(); if ($user && Hash::check($request->password, $user->password)) { return $user; } }); // ... }
https://laravel.com/docs/8.x/fortify#customizing-user-authentication
Ejemplo 2. También puede editar la app/Providers/FortifyServiceProvider.php
Y en el método de arranque agregar
Fortify::authenticateUsing(function (Request $request){ $is_admin = $request->is_admin ?? 1; // Other codes here });
Además, a menos que no lo haya entendido correctamente pero solo quiera estar seguro de que el usuario es administrador antes de permitir el inicio de sesión, entonces podría modificar el código de autenticación en el Example 1
para hacerlo.
Fortify::authenticateUsing(function (Request $request) { $user = User::where(['email' => $request->email, 'is_admin' => 1])->first(); if ($user && Hash::check($request->password, $user->password)) { return $user; } });