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

De WikiEducator
Saltar a: navegación, buscar
(Página creada con «Two-Factory-Authentication{{vbar}} {{MRM_Web| *https://laravel.com/docs/9.x/verification }}»)
 
 
(8 revisiones intermedias por el mismo usuario no mostrado)
Línea 4: Línea 4:
  
 
}}
 
}}
 +
===Introducción===
 +
*Instalación  de un proyecto nuevo
 +
<source lang=bash>
 +
laravel new auth-mail
 +
</source>
 +
===Modelo===
 +
*Especificamos que el '''model'''  autentificable ( '''user''' por defecto)implemente la interfaz  '''''Illuminate\Contracts\Auth\MustVerifyEmail contract''''':
 +
<source lang=php>
 +
//....
 +
use Illuminate\Contracts\Auth\MustVerifyEmail;
 +
 +
class User extends Authenticatable implements MustVerifyEmail
 +
//......
 +
</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>
 +
===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
 +
 +
<source lang=php>
 +
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}"
 +
</source>
 +
 +
===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 ....
 +
<source lang=php>
 +
'mailers' => [
 +
        'smtp' => [
 +
//....
 +
    // add por mí para problema ....
 +
            'auth_mode' => null,
 +
            'stream' => [
 +
                'ssl' => [
 +
                    'allow_self_signed' => true,
 +
                    'verify_peer' => false,
 +
                    'verify_peer_name' => false,
 +
                ],
 +
            ],
 +
 +
 +
 +
//...
 +
</source>
 +
;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>

Última revisión de 08:14 6 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');

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>