Ich suche in Magento die Klasse , die einen Kunden anmeldet, und finde nicht, wo sich dieser befindet.
Ich muss in der Lage sein, einen Benutzer extern ein Magento anzumelden.
Irgendeine Idee?
Ich suche in Magento die Klasse , die einen Kunden anmeldet, und finde nicht, wo sich dieser befindet.
Ich muss in der Lage sein, einen Benutzer extern ein Magento anzumelden.
Irgendeine Idee?
Antworten:
$ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance ();
// Kunden laden
$ customer = $ objectManager-> create ('Magento \ Customer \ Model \ Customer') -> load (2); // 2 ist die Kunden-ID
// Kundensitzung laden
$ customerSession = $ objectManager-> create ('Magento \ Customer \ Model \ Session');
$ customerSession-> setCustomerAsLoggedIn ($ customer);
if ($ customerSession-> isLoggedIn ()) {
Echo "Kunde angemeldet";
}sonst{
echo "Kunde ist nicht angemeldet";
}}
Ein besserer Weg mit Magento 2 ist heutzutage:
protected $ _customerFactory;
protected $ _sessionFactory;
öffentliche Funktion __construct (
...
\ Magento \ Customer \ Model \ CustomerFactory $ customerFactory,
\ Magento \ Customer \ Model \ SessionFactory $ sessionFactory,
...
)
{
...
$ this -> _ customerFactory = $ customerFactory;
$ this -> _ sessionFactory = $ sessionFactory;
...
}}
Nehmen wir nun an, dies ist auf einem Magento 2-Controller, dann haben wir Folgendes:
öffentliche Funktion execute ()
{
...
$ customer = $ this -> _ customerFactory-> create () -> load ($ id) // $ id ist die
Kunden-ID, die Sie laden möchten
$ sessionManager = $ this -> _ sessionFactory-> create ();
$ sessionManager-> setCustomerAsLoggedIn ($ customer);
...
}}
Es wird immer empfohlen, die Abhängigkeitsinjektion zu verwenden, um entweder Modellfabriken oder Schnittstellen für das Tool abzurufen, das Sie verwenden möchten, anstatt Objektmanagerinstanzen abzurufen.
Schauen Sie sich app / code / Magento / Customer / Controller / Account / LoginPost.php an
class LoginPost extends \Magento\Customer\Controller\AbstractAccount
{
....
public function execute()
{
if ($this->session->isLoggedIn() || !$this->formKeyValidator->validate($this->getRequest())) {
/** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
$resultRedirect = $this->resultRedirectFactory->create();
$resultRedirect->setPath('*/*/');
return $resultRedirect;
}
if ($this->getRequest()->isPost()) {
$login = $this->getRequest()->getPost('login');
if (!empty($login['username']) && !empty($login['password'])) {
try {
$customer = $this->customerAccountManagement->authenticate($login['username'], $login['password']);
$this->session->setCustomerDataAsLoggedIn($customer);
$this->session->regenerateId();
....