Как автоматически войти в систему клиента с помощью модуля Magento Auth0? - PullRequest
0 голосов
/ 19 января 2019

Я делаю модуль Magento для входа в Auth0.Я использую Auth0 php lib, который у меня есть в папке lib, которую я получаю, используя composer.С наблюдателем я загружаю эту PHP-библиотеку.Я могу вызвать url с помощью действия моего контроллера модуля, который затем проверит, загружен ли пользователь с Auth0, если да, он проверит, есть ли пользователь Magento с этим электронным письмом, и войдет в него.Но я хочу сделать это автоматически, поэтому, когда кто-нибудь посещает мой интернет-магазин Magento, он проверит Auth0 и автоматически войдет в него.Как я могу это сделать ?Я пробовал это с наблюдателем, но безуспешно, не уверен, какое событие мне следует использовать.Спасибо

Пример автозагрузки Auth0 php lib с наблюдателем:

public static function controllerFrontInitBefore(Varien_Event_Observer $event) {
    self::init();
}


static function init()
{
    // Add our vendor folder to our include path
    set_include_path(get_include_path() . PATH_SEPARATOR . Mage::getBaseDir('lib') . DS . 'MyCompany' . DS . 'Sso' . DS . 'vendor');

    // Include the autoloader for composer
    require_once(Mage::getBaseDir('lib') . DS . 'MyCompany' . DS . 'Sso' . DS . 'vendor' . DS . 'autoload.php');
}

Пример действия контроллера (который мне нужно вызывать автоматически на каждой странице):

public function checkAction()
{   
    $domain = '***.eu.auth0.com';
    $clientId = '***';
    $clientSecret = '***';
    $audience = 'https://***.eu.auth0.com/userinfo';
    $redirectUri = 'http://***/sso/index/check';


    $auth0 = new Auth0([
        // See Installation above to setup environment variables.
        'domain' => $domain,
        'client_id' => $clientId,
        'client_secret' => $clientSecret,
        'audience' => $audience,
        'redirect_uri' => $redirectUri,
        // The scope determines what data is provided by the /userinfo endpoint.
        // There must be at least one valid scope included here for anything to be returned from /userinfo.
        'scope' => 'openid profile',
        'persist_id_token' => true,
        'persist_access_token' => true,
        'persist_refresh_token' => true
    ]);

    $userInfo = $auth0->getUser();

    if (empty($userInfo)) {
        $auth0->login();
    } else {
        //login magento user
    }
...