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

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,
                ],
            ],
 
 
 
//...
Problema actual 5/8/22
Expected response code "250" but got code "550", with message "550 127.0.0.1 is _my_ address".
otro
fgets(): SSL: Connection reset by peer


</source>