Usuario:ManuelRomero/Laravel/autentificacion/Email

De WikiEducator
Saltar a: navegación, buscar

Two-Factory-Authentication | 



Introducción

  • Instalación de un proyecto nuevo
laravel new auth-mail

Modelo

  • Especificamos que el model autentificable ( user por defecto)implemente la interfaz Illuminate\Contracts\Auth\MustVerifyEmail contract:
//....
use Illuminate\Contracts\Auth\MustVerifyEmail;
 
class User extends Authenticatable implements MustVerifyEmail
//......

Data base

Ejecutamos las migraciones por defecto,
  • Primero preparamos previamente el entorno en el ficheor .env (Databaname, Server ....)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=auth_mail
DB_USERNAME=root
DB_PASSWORD=xxxxxxx
  • Ejecutamos migraciones por defecto
php artisan migrate

Routing

  • Necesitamos especificar tres rutas:
1.-Enlace de verficación de correo
  • En estar ruta se le muestra al usuario que debe e hacer un click en el enlace de verificación de correo que le aparecerá, entregándelo una vista
Route::get('/email/verify', function () {
    return view('auth.verify-email');
})->middleware('auth')->name('verification.notice');
2.-Manejador de solicitudes generadas
  • Una ruta que nos valida con el id y el hash y nos envía a la ruta que deseemosanterior).
  • Aquí se manejar la solicitud de verificación de correo cuando el usuario hace un click en la verificación de emial
use Illuminate\Foundation\Auth\EmailVerificationRequest;
 
Route::get('/email/verify/{id}/{hash}', function (EmailVerificationRequest $request) {
    $request->fulfill();
 
    return redirect('/home');
})->middleware(['auth', 'signed'])->name('verification.verify');
3.- Ruta de reenvío por si el usuario pierde el primer enlace
  • En esta ruta se entregará una vista para que el usuario pueda actuar si pierde el enlacer de verificación
use Illuminate\Http\Request;
 
Route::post('/email/verification-notification', function (Request $request) {
    $request->user()->sendEmailVerificationNotification();
 
    return back()->with('message', 'Verification link sent!');
})->middleware(['auth', 'throttle:6,1'])->name('verification.send');