Autenticación Personalizada en Laravel sin Utilizar Auth ni sus Propiedades [SOLUCIONADO]

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!

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad