Autour de Laravel

Action personnalisé après la validation de l'adresse Email d'un utilisateur

Avatar de KYoann
KYoann

Salut à tous.

Je cherche un moyen pour que lorsque l'utilisateur valide son adresse Email en cliquant sur le lien reçu dans sa boite mail, que mon application fasse différentes actions, notament modifier l'utilisateur pour qu'il puisse recevoir les notifications par Email.

J'imagine que ca doit ce jouer dans le VerificationController.php, mais par défaut ce controller n'a aucune méthode associé

Malgrès les différentes recherches, je n'ai rien trouvé de concluant.

Merci

Avatar de bestmomo
bestmomo

Salut,

Dans le contrôleur VerifyEmailController il est envoyé un événement Illuminate\Auth\Events\Verified lorsque l'utilisateur est vérifié positivement. Il suffit donc d'utiliser cet événement en déclarant une écoute dans EventServiceProvider.

Avatar de KYoann
KYoann

Salut Bestmomo,

Merci pour ces informations, je vais etudier ca et je revient içi.

Avatar de KYoann
KYoann

Merci beaucou Bestmomo, ca fonctionne parfaitement, voici le résultat :

Création de mon Event Listener

 λ php artisan make:listener EmailVerification

Déclaré du Listener "EmailVerification" dans le fichier : EventServiceProvider.php

<?php

namespace App\Providers;


use Illuminate\Auth\Events\Verified;
use Illuminate\Support\Facades\Event;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;

class EventServiceProvider extends ServiceProvider
{

    public function shouldDiscoverEvents(): bool
    {
        return true;
    }

    /**
     * The event listener mappings for the application.
     *
     * @var array
     */
    protected $listen = [
        'App\Events\Event' => [
            'App\Listeners\EventListener',
        ],
       'Illuminate\Auth\Events\Verified' => [
            'App\Listeners\EmailVerification'
        ]
    ];

    /**
     * Register any events for your application.
     *
     * @return void
     */
    public function boot()
    {
        parent::boot();

    }
}

Contenu de mon Event, qui va modifier les options par defaut de notification de l'utilisateur dès qu'il aura valider son adresse Email.

<?php

namespace App\Listeners;


class EmailVerification
{
    /**
     * Create the event listener.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Handle the event.
     * Activation des notification par Email des que l'utilisateur à verifié son adresse Email en cliquant sur le lien du mail reçu
     *
     * @param  object  $event
     * @return void
     */
    public function handle($event)
    {

        $user = $event->user;
        $user->notification_preference = 'database,mail';
        $user->save();

    }
}

Vraiment très pratique ce framework. et encore merci pour ton aide.

Vous ne pouvez pas répondre à ce sujet.