Diferencia entre revisiones de «Usuario:ManuelRomero/Laravel/autentificacion/Email»
De WikiEducator
(→Modelo) |
(→Modelo) |
||
Línea 18: | Línea 18: | ||
//...... | //...... | ||
</source> | </source> | ||
− | + | ===Data base=== | |
− | + | ;Ejecutamos las migraciones por defecto, | |
− | + | *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 23:34 4 ago 2022
|
Contenido
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');