/** * Resetting password handler * * @return \Magento\Framework\Controller\Result\Redirect|\Magento\Framework\View\Result\Page */ public function executeInternal() { $resetPasswordToken = (string) $this->getRequest()->getParam('token'); $customerId = (int) $this->getRequest()->getParam('id'); $isDirectLink = $resetPasswordToken != '' && $customerId != 0; if (!$isDirectLink) { $resetPasswordToken = (string) $this->session->getRpToken(); $customerId = (int) $this->session->getRpCustomerId(); } try { $this->accountManagement->validateResetPasswordLinkToken($customerId, $resetPasswordToken); if ($isDirectLink) { $this->session->setRpToken($resetPasswordToken); $this->session->setRpCustomerId($customerId); $resultRedirect = $this->resultRedirectFactory->create(); $resultRedirect->setPath('*/*/createpassword'); return $resultRedirect; } else { /** @var \Magento\Framework\View\Result\Page $resultPage */ $resultPage = $this->resultPageFactory->create(); $resultPage->getLayout()->getBlock('resetPassword')->setCustomerId($customerId)->setResetPasswordLinkToken($resetPasswordToken); return $resultPage; } } catch (\Exception $exception) { $this->messageManager->addError(__('Your password reset link has expired.')); /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */ $resultRedirect = $this->resultRedirectFactory->create(); $resultRedirect->setPath('*/*/forgotpassword'); return $resultRedirect; } }
/** * @magentoDataFixture Magento/Customer/_files/customer.php * */ public function testValidateResetPasswordLinkTokenNull() { try { $this->accountManagement->validateResetPasswordLinkToken(1, null); $this->fail('Expected exception not thrown.'); } catch (InputException $ie) { $this->assertEquals(InputException::REQUIRED_FIELD, $ie->getRawMessage()); $this->assertEquals('resetPasswordLinkToken is a required field.', $ie->getMessage()); $this->assertEquals('resetPasswordLinkToken is a required field.', $ie->getLogMessage()); $this->assertEmpty($ie->getErrors()); } }