Usuario:ManuelRomero/Laravel/autentificacion/Email
De WikiEducator
< Usuario:ManuelRomero | Laravel | autentificacion
Revisión a fecha de 00:04 5 ago 2022; ManuelRomero (Discusión | contribuciones)
|
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');
Configuración del servidor de correo
- Para que todo el sistema funcione, debemos tener configuerado en el web server un mail server.
- La configuración ha de estar establecida en el fichero de configueración .ENV
- Usando hestia, debemos mostrar los datos y copiarlos
AIL_MAILER=smtp MAIL_HOST=localhost MAIL_PORT=587 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null MAIL_FROM_ADDRESS="alumno1@manuel.infenlaces.com" MAIL_FROM_NAME="${APP_NAME}"
PROBLEMAS
- El primer problema que me aparece es que supero el número de inodos en el sistema, lo soluciono aquí
https://stackoverflow.com/questions/65300153/error-enospc-system-limit-for-number-of-file-watchers-reached-angular
- El segundo problema, parece que tiene que ver con que no tengo un certificado en mi servidor
- Por ahora lo que he hecho es modificar el fichero de mail.php ubicado en config y he añadido en el elemento mailers/smtp, pero sigue sin funcionar ....
'mailers' => [ 'smtp' => [ //.... // add por mí para problema .... 'auth_mode' => null, 'stream' => [ 'ssl' => [ 'allow_self_signed' => true, 'verify_peer' => false, 'verify_peer_name' => false, ], ], //...
</source>