mirror of
https://github.com/bdnugget/magento2.git
synced 2026-11-07 09:17:35 +00:00
237 lines
6.9 KiB
PHP
237 lines
6.9 KiB
PHP
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
|
|
namespace Magento\Backend\Model;
|
|
|
|
use Magento\Framework\Exception\AuthenticationException;
|
|
use Magento\Framework\Exception\Plugin\AuthenticationException as PluginAuthenticationException;
|
|
use Magento\Framework\Phrase;
|
|
|
|
/**
|
|
* Backend Auth model
|
|
*
|
|
* @api
|
|
* @since 100.0.2
|
|
*/
|
|
class Auth
|
|
{
|
|
/**
|
|
* @var \Magento\Backend\Model\Auth\StorageInterface
|
|
*/
|
|
protected $_authStorage;
|
|
|
|
/**
|
|
* @var \Magento\Backend\Model\Auth\Credential\StorageInterface
|
|
*/
|
|
protected $_credentialStorage;
|
|
|
|
/**
|
|
* Backend data
|
|
*
|
|
* @var \Magento\Backend\Helper\Data
|
|
*/
|
|
protected $_backendData;
|
|
|
|
/**
|
|
* Core event manager proxy
|
|
*
|
|
* @var \Magento\Framework\Event\ManagerInterface
|
|
*/
|
|
protected $_eventManager;
|
|
|
|
/**
|
|
* @var \Magento\Framework\App\Config\ScopeConfigInterface
|
|
*/
|
|
protected $_coreConfig;
|
|
|
|
/**
|
|
* @var \Magento\Framework\Data\Collection\ModelFactory
|
|
*/
|
|
protected $_modelFactory;
|
|
|
|
/**
|
|
* @param \Magento\Framework\Event\ManagerInterface $eventManager
|
|
* @param \Magento\Backend\Helper\Data $backendData
|
|
* @param \Magento\Backend\Model\Auth\StorageInterface $authStorage
|
|
* @param \Magento\Backend\Model\Auth\Credential\StorageInterface $credentialStorage
|
|
* @param \Magento\Framework\App\Config\ScopeConfigInterface $coreConfig
|
|
* @param \Magento\Framework\Data\Collection\ModelFactory $modelFactory
|
|
*/
|
|
public function __construct(
|
|
\Magento\Framework\Event\ManagerInterface $eventManager,
|
|
\Magento\Backend\Helper\Data $backendData,
|
|
\Magento\Backend\Model\Auth\StorageInterface $authStorage,
|
|
\Magento\Backend\Model\Auth\Credential\StorageInterface $credentialStorage,
|
|
\Magento\Framework\App\Config\ScopeConfigInterface $coreConfig,
|
|
\Magento\Framework\Data\Collection\ModelFactory $modelFactory
|
|
) {
|
|
$this->_eventManager = $eventManager;
|
|
$this->_backendData = $backendData;
|
|
$this->_authStorage = $authStorage;
|
|
$this->_credentialStorage = $credentialStorage;
|
|
$this->_coreConfig = $coreConfig;
|
|
$this->_modelFactory = $modelFactory;
|
|
}
|
|
|
|
/**
|
|
* Set auth storage if it is instance of \Magento\Backend\Model\Auth\StorageInterface
|
|
*
|
|
* @param \Magento\Backend\Model\Auth\StorageInterface $storage
|
|
* @return $this
|
|
* @throws \Magento\Framework\Exception\AuthenticationException
|
|
*/
|
|
public function setAuthStorage($storage)
|
|
{
|
|
if (!$storage instanceof \Magento\Backend\Model\Auth\StorageInterface) {
|
|
self::throwException(__('Authentication storage is incorrect.'));
|
|
}
|
|
$this->_authStorage = $storage;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Return auth storage.
|
|
* If auth storage was not defined outside - returns default object of auth storage
|
|
*
|
|
* @return \Magento\Backend\Model\Auth\StorageInterface
|
|
* @codeCoverageIgnore
|
|
*/
|
|
public function getAuthStorage()
|
|
{
|
|
return $this->_authStorage;
|
|
}
|
|
|
|
/**
|
|
* Return current (successfully authenticated) user,
|
|
* an instance of \Magento\Backend\Model\Auth\Credential\StorageInterface
|
|
*
|
|
* @return \Magento\Backend\Model\Auth\Credential\StorageInterface
|
|
*/
|
|
public function getUser()
|
|
{
|
|
return $this->getAuthStorage()->getUser();
|
|
}
|
|
|
|
/**
|
|
* Initialize credential storage from configuration
|
|
*
|
|
* @return void
|
|
*/
|
|
protected function _initCredentialStorage()
|
|
{
|
|
$this->_credentialStorage = $this->_modelFactory->create(
|
|
\Magento\Backend\Model\Auth\Credential\StorageInterface::class
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Return credential storage object
|
|
*
|
|
* @return null|\Magento\Backend\Model\Auth\Credential\StorageInterface
|
|
* @codeCoverageIgnore
|
|
*/
|
|
public function getCredentialStorage()
|
|
{
|
|
return $this->_credentialStorage;
|
|
}
|
|
|
|
/**
|
|
* Perform login process
|
|
*
|
|
* @param string $username
|
|
* @param string $password
|
|
* @return void
|
|
* @throws \Magento\Framework\Exception\AuthenticationException
|
|
*/
|
|
public function login($username, $password)
|
|
{
|
|
if (empty($username) || empty($password)) {
|
|
self::throwException(
|
|
__(
|
|
'The account sign-in was incorrect or your account is disabled temporarily. '
|
|
. 'Please wait and try again later.'
|
|
)
|
|
);
|
|
}
|
|
|
|
try {
|
|
$this->_initCredentialStorage();
|
|
$this->getCredentialStorage()->login($username, $password);
|
|
if ($this->getCredentialStorage()->getId()) {
|
|
$this->getAuthStorage()->setUser($this->getCredentialStorage());
|
|
$this->getAuthStorage()->processLogin();
|
|
|
|
$this->_eventManager->dispatch(
|
|
'backend_auth_user_login_success',
|
|
['user' => $this->getCredentialStorage()]
|
|
);
|
|
}
|
|
|
|
if (!$this->getAuthStorage()->getUser()) {
|
|
self::throwException(
|
|
__(
|
|
'The account sign-in was incorrect or your account is disabled temporarily. '
|
|
. 'Please wait and try again later.'
|
|
)
|
|
);
|
|
}
|
|
} catch (PluginAuthenticationException $e) {
|
|
$this->_eventManager->dispatch(
|
|
'backend_auth_user_login_failed',
|
|
['user_name' => $username, 'exception' => $e]
|
|
);
|
|
throw $e;
|
|
} catch (\Magento\Framework\Exception\LocalizedException $e) {
|
|
$this->_eventManager->dispatch(
|
|
'backend_auth_user_login_failed',
|
|
['user_name' => $username, 'exception' => $e]
|
|
);
|
|
self::throwException(
|
|
__(
|
|
$e->getMessage()? : 'The account sign-in was incorrect or your account is disabled temporarily. '
|
|
. 'Please wait and try again later.'
|
|
)
|
|
);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Perform logout process
|
|
*
|
|
* @return void
|
|
*/
|
|
public function logout()
|
|
{
|
|
$this->getAuthStorage()->processLogout();
|
|
}
|
|
|
|
/**
|
|
* Check if current user is logged in
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function isLoggedIn()
|
|
{
|
|
return $this->getAuthStorage()->isLoggedIn();
|
|
}
|
|
|
|
/**
|
|
* Throws specific Backend Authentication \Exception
|
|
*
|
|
* @param \Magento\Framework\Phrase $msg
|
|
* @return void
|
|
* @throws \Magento\Framework\Exception\AuthenticationException
|
|
* @static
|
|
*/
|
|
public static function throwException(Phrase $msg = null)
|
|
{
|
|
if ($msg === null) {
|
|
$msg = __('An authentication error occurred. Verify and try again.');
|
|
}
|
|
throw new AuthenticationException($msg);
|
|
}
|
|
}
|