Frecuentemente, nos encontramos con la necesidad de modificar el modelo de autenticación predeterminado que Laravel tiene. ¿Cómo podemos crear una autentificación personalizada en Laravel sin recurrir al uso del comando auth ni a sus propiedades? ¡Sigamos estos pasos!
Registro Personalizado
Comenzaremos hablando sobre cómo crear un registro personalizado. Primero se necesita un controlador. Puede generarse un controlador con el comando make:controller.
php artisan make:controller CustomAuthController
Este comando hará que un nuevo archivo llamado CustomAuthController.php aparezca en su directorio Controllers.
Validación y almacenamiento de datos
Ahora, definiremos una función para validar y almacenar datos en nuestra base de datos.
public function postRegister(Request $request) { $validationRules = [ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:6|confirmed', ]; $request->validate($validationRules); $user = new User(); $user->name = $request->name; $user->email = $request->email; $user->password = bcrypt($request->password); $user->save(); return redirect()->route('home'); }
Este código se encargará de validar los datos del formulario y, en caso de éxito, almacenará la información del usuario en la base de datos y redirigirá al usuario a la página de inicio.
Iniciando sesión
Para permitir a los usuarios iniciar sesión en Laravel de manera personalizada, debemos realizar una estrategia de comprobación de datos similar a la que usamos para el registro.
public function postLogin(Request $request) { $validationRules = [ 'email' => 'required|string|email|max:255', 'password' => 'required|string|min:6', ]; $request->validate($validationRules); if (Auth::attempt(['email' => $request->email, 'password' => $request->password])) { return redirect()->route('home'); }else { return back()->with('error', 'Email o contraseña incorrectos'); } }
Este código realizará una validación similar a la realizada en el registro pero comparará la información brindada con la almacenada en la base de datos. Si coincide, el usuario se autentica y se redirige al inicio. Si no coincide, se retorna un error.
Cerrando sesión
Finalmente, necesitamos una función para que los usuarios puedan cerrar sesión.
public function postLogout() { Auth::logout(); return redirect()->route('home'); }
Este simple código cerrará la sesión actual del usuario y redirigirá al usuario a la página de inicio.
Crear una autenticación personalizada en Laravel sin recurrir al comando auth ni a sus propiedades puede parecer complicado al principio, pero con algo de práctica y paciencia, es una tarea completamente manejable. ¡No olvides siempre probar tu código para asegurarte de que todo funcione correctamente!