reload password by token - SamuelPouzet/auth GitHub Wiki
We'll need two forms SamuelPouzet\Auth\Interface\Form\TokenFormInterface; SamuelPouzet\Auth\Interface\Form\ReloadPasswordFormInterface;
use SamuelPouzet\Auth\Service\UserService;
public function reloadPasswordAction(): ViewModel { $token = $this->params()->fromRoute('id', null);
$form = $this->getForm(TokenFormInterface::class);
$form->setData(['token' => $token]);
$user = $this->userService->getUserByToken($form);
$passwordForm = $this->getForm(ReloadPasswordFormInterface::class);
if ($this->request->isPost()) {
$data = $this->params()->fromPost();
$passwordForm->setData($data);
if ($passwordForm->isValid()) {
$formData = $passwordForm->getData();
$this->userService->updatePassword($user, ['password' => $formData['new_password']]);
$this->userService->updateToken($user, true);
}
}
return new ViewModel([
'user' => $user,
'form' => $passwordForm,
]);
}