DEV Community

Cover image for 7 Tips esenciales de Laravel Auth
TMC
TMC

Posted on

7 Tips esenciales de Laravel Auth

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4irnwb504wb1jkepcz61.jpg

Laravel Auth es el kit de autenticación de usuarios que nos proporciona el framework Laravel. Tal como especifica la documentación. Este módulo nos permite implementar de manera muy rápida la capa de autenticación de usuarios en nuestras aplicaciones webs.

Tip 1. Cómo iniciar sesión con un usuario, si tenemos el ID o el objeto Usuario.

Para hacer este inicio de sesión utilizamos los siguientes métodos.

https://laravel.com/docs/8.x/authentication#other-authentication-methods



# Autenticación de Usuario por id.

Auth::loginUsingId(1);

# Autenticación de Usuario por Objeto Usuario.

Auth::login($user);

Auth::login($user, $remember = true);

# Con el helper auth()->login($user)

auth()->login($user);


Enter fullscreen mode Exit fullscreen mode

Tip 2. Cómo obtener el ID de un usuario autenticado.

Cuando es necesario interactuar con un usuario autenticado, obtener su información o simplemente su ID, utilizamos Auth Facade y el método Auth::user() o el helper auth().



use Illuminate\Support\Facades\Auth;

// Retrieve the currently authenticated user...
$user = Auth::user();

// Retrieve the currently authenticated user's ID...
$id = Auth::id();

// También podemos utilizar el helper auth() y así no tenemos que instanciar
// el Facade de Auth, "Esta elección es a gusto de gustos del programador ;)"
auth()->user();
auth()->id();



Enter fullscreen mode Exit fullscreen mode

Tip 3. Cómo verificar un usuario autenticado en Blade.

Tenemos el legendario if(auth()→check()) que está muy bien hacerlo de esta manera en nuestro código. No obstante, te voy a dar una manera más corta que ofrece Laravel, que es simplemente "@auth y @endauth". Vamos al ejemplo:

Primera vía, escribiendo if/else en Blade



@if (auth()->check())

@else

@endif


Enter fullscreen mode Exit fullscreen mode

Segunda vía, escribiendo auth



@auth

@else

@endauth


Enter fullscreen mode Exit fullscreen mode

Tip 4. Implementar la verificación de email para nuevos usuarios registrados.

Muchas veces necesitamos que los usuarios verifiquen el correo electrónico con el que se registraron en el app, bien sea por razones de seguridad, o para estar seguros de que las comunicaciones que enviemos al usuario lleguen al buzón de correos de una cuenta existente. Laravel nos ofrece esta implementación haciendo solamente unos pequeños ajustes:

En el modelo User agregar la interfaz MustVerifyEmail y con esto, al registrar un nuevo usuario en nuestra app, le llegará un email de verificación.



class User extends Authenticatable implements MustVerifyEmail
{
    use Notifiable;

    // ...
}


Enter fullscreen mode Exit fullscreen mode

También, podemos proteger las rutas, para que solo tengan acceso aquellos usuarios que han sido verificados por email, utilizando el middleware middleware('verified')



Route::get('/profile', function () {
    // Only verified users may access this route...
})->middleware('verified');


Enter fullscreen mode Exit fullscreen mode

Tip 5. Confirmación extra de contraseña.

En algunas ocasiones necesitamos poner una verificación de seguridad en alguna ruta. Por ejemplo, un usuario quiere modificar alguna información importante y queremos asegurarnos de que se trate de él. Para comprobar este paso, podemos volver a pedir su contraseña y Laravel tiene un middleware llamado password.confirm que realiza esta verificación.



Route::get('/settings', function () {
    // ...
})->middleware(['password.confirm']);

Route::post('/settings', function () {
    // ...
})->middleware(['password.confirm']);


Enter fullscreen mode Exit fullscreen mode

Tip 6. Cómo crear un usuario desde la consola de Tinker.

Trabajando con Laravel en algún momento, te encontrarás con la necesidad de crear un usuario sin utilizar el formulario de registro, más aun si estás escribiendo tests en tu aplicación.

Si vamos al seeder de usuario encontraremos esta línea:



\App\Models\User::factory(10)->create();


Enter fullscreen mode Exit fullscreen mode

La cual invoca el User::factory y crea 10 usuarios con información ficticia al momento que ejecutemos los seeder de la base de datos.

Pero, si necesitamos crear uno y tal vez pasar alguna información que no queremos que sea falsa, por ejemplo: el email, podemos ejecutar directamente el User::factory desde la consola de Tinker y crearlo, como en el siguiente ejemplo:



User::factory()->create(['email' => 'test-2@mail.com'])


Enter fullscreen mode Exit fullscreen mode

Tip 7. Reforzando las validaciones de contraseñas.

A partir de Laravel 8 tenemos disponible un objeto que permite modificar la complejidad de las contraseñas en nuestras aplicaciones. Además, puede asegurarnos de que la contraseña no se haya visto comprometida en fugas de datos:

Este objeto tiene los siguientes métodos:



$request->validate([
    // Hace que la contraseña requiera al menos una letra mayúscula y una minúscula.
    'password' =>  ['required', 'confirmed', Password::min(8)->mixedCase()],

    // Hace que la contraseña requiera al menos una letra.
    'password' =>  ['required', 'confirmed', Password::min(8)->letters()],

    // Hace que la contraseña requiera al menos un número
    'password' =>  ['required', 'confirmed', Password::min(8)->numbers()],

    /// Hace que la contraseña requiera al menos un símbolo.
    'password' =>  ['required', 'confirmed', Password::min(8)->symbols()],

    // Garantiza que la contraseña no se haya visto comprometida en fugas de datos.
    'password' =>  ['required', 'confirmed', Password::min(8)->uncompromised()],
]);ara usarlo solo hay que agregar los métodos en en nuestras reglas de validaciones, por ejemplo:


Enter fullscreen mode Exit fullscreen mode

Para implementarlo utilizamos estos métodos en las validaciones que están en los controladores, de la siguiente manera:



public function store(Request $request)
    {
        $request->validate([
            'name' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:users',
            'password' => ['required', 'confirmed', Password::min(8)
                    ->mixedCase()
                    ->letters()
                    ->numbers()
                    ->symbols()
                    ->uncompromised(),
            ],
        ]);


Enter fullscreen mode Exit fullscreen mode

¿Sabes otros interesantes tips sobre Laravel Auth? Compártelo en los comentarios.👨🏽‍💻 🙌🏼

Espero que pongas en práctica estos tips en tu proyectos. Nos vemos en un próximo post.

Hasta la próxima coders!

Top comments (0)