/** * Login registered users and initiate a session. Send back the session id. * * Expects a POST. ex for JSON {"username":"******", "password":"******"} * * @return void */ public function execute() { $contentTypeHeaderValue = $this->getRequest()->getHeader('Content-Type'); $contentType = $this->getContentType($contentTypeHeaderValue); $loginData = null; try { $loginData = $this->deserializerFactory->get($contentType)->deserialize($this->getRequest()->getRawBody()); } catch (Exception $e) { $this->getResponse()->setHttpResponseCode($e->getCode()); return; } if (!$loginData || $this->getRequest()->getMethod() !== \Magento\Webapi\Model\Rest\Config::HTTP_METHOD_POST) { $this->getResponse()->setHttpResponseCode(HttpException::HTTP_BAD_REQUEST); return; } $customerData = null; try { $customerData = $this->customerAccountService->authenticate($loginData['username'], $loginData['password']); } catch (AuthenticationException $e) { $this->getResponse()->setHttpResponseCode(HttpException::HTTP_UNAUTHORIZED); return; } $this->session->start('frontend'); $this->session->setUserId($customerData->getId()); $this->session->setUserType(UserIdentifier::USER_TYPE_CUSTOMER); $this->session->regenerateId(true); }
/** * Customer authorization * * @param string $username * @param string $password * @return bool */ public function login($username, $password) { try { $customer = $this->_customerAccountService->authenticate($username, $password); $this->setCustomerDataAsLoggedIn($customer); return true; } catch (\Exception $e) { return false; } }
/** * @magentoAppArea frontend * @magentoDataFixture Magento/Customer/_files/customer.php */ public function testCreateNewCustomerFromClone() { $email = '*****@*****.**'; $firstName = 'Firstsave'; $lastname = 'Lastsave'; $existingCustId = 1; $existingCustomer = $this->_customerAccountService->getCustomer($existingCustId); $customerData = array_merge($existingCustomer->__toArray(), ['email' => $email, 'firstname' => $firstName, 'lastname' => $lastname, 'created_in' => 'Admin', 'id' => null]); $this->_customerBuilder->populateWithArray($customerData); $customerEntity = $this->_customerBuilder->create(); $customerDetails = $this->_customerDetailsBuilder->setCustomer($customerEntity)->create(); $customer = $this->_customerAccountService->createCustomer($customerDetails, 'aPassword'); $this->assertNotEmpty($customer->getId()); $this->assertEquals($email, $customer->getEmail()); $this->assertEquals($firstName, $customer->getFirstname()); $this->assertEquals($lastname, $customer->getLastname()); $this->assertEquals('Admin', $customer->getCreatedIn()); $this->_customerAccountService->authenticate($customer->getEmail(), 'aPassword', true); }
/** * {@inheritdoc} */ public function createCustomerAccessToken($username, $password) { $this->validateCredentials($username, $password); $customerDataObject = $this->customerAccountService->authenticate($username, $password); return $this->tokenModelFactory->create()->createCustomerToken($customerDataObject->getId())->getToken(); }