Diferencia entre revisiones de «Usuario:ManuelRomero/Laravel/autentificacion/Email»

De WikiEducator
Saltar a: navegación, buscar
(Modelo)
(Modelo)
Línea 18: Línea 18:
 
//......
 
//......
 
</source>
 
</source>
##Data base
+
===Data base===
##Routing
+
;Ejecutamos las migraciones por defecto,
##Personalizar
+
*Primero preparamos previamente el entorno en el ficheor .env (Databaname, Server ....)
 +
<source lang=php>
 +
 
 +
DB_CONNECTION=mysql
 +
DB_HOST=127.0.0.1
 +
DB_PORT=3306
 +
DB_DATABASE=auth_mail
 +
DB_USERNAME=root
 +
DB_PASSWORD=xxxxxxx
 +
</source>
 +
*Ejecutamos migraciones por defecto
 +
<source lang=php>
 +
php artisan migrate
 +
</source>
 +
===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
 +
<source lang=php>
 +
Route::get('/email/verify', function () {
 +
    return view('auth.verify-email');
 +
})->middleware('auth')->name('verification.notice');
 +
</source>
 +
 
 +
;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
 +
<source lang=php>
 +
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');
 +
 
 +
</source>
 +
;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
 +
<source lang=php>
 +
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');
 +
</source>

Revisión de 22:34 4 ago 2022

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');