EC-CUBE4でログインしたときに何かする方法

EC-CUBE4でログインしたときに何かする方法です。

まずCusotomizeディレクトリ内にEventSubscriberディレクトリを設置してください。

次に以下のようにAuthenticationSuccessSubscriber.phpを作成してEventSubscriber内に設置してください。

<?php

namespace Customize\EventSubscriber;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Core\AuthenticationEvents;
use Symfony\Component\Security\Core\Event\AuthenticationEvent;

/**
 * ログインしたときに何かする
 *
 * @author Akira Kurozumi <info@a-zumi.net>
 */
class AuthenticationSuccessSubscriber implements EventSubscriberInterface {

    public static function getSubscribedEvents(): array
    {
        return [
            AuthenticationEvents::AUTHENTICATION_SUCCESS => "onAuthenticationSuccess"
        ];
    }
    
    public function onAuthenticationSuccess(AuthenticationEvent $event)
    {
        $token = $event->getAuthenticationToken();
        
        if(!$token->getRoles()) {
            return;
        }

        switch($token->getProviderKey()) {
            case "customer":
                // 会員がログインしたときに何かする
                var_dump("customer");
                $User = $token->getUser();
                break;
            case "admin":
                // メンバーがログインしたときに何かする
                var_dump("admin");
                $User = $token->getUser();
                break;
        }
    }

}

以上で完成です。

これで会員またはメンバーがログインしたときにメール通知などの何かしらの処理が追加できます。

お気軽にコメントをどうぞ

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください