Implement account edit; add SessionHelper, PasswordHelper and ActionResult
This commit is contained in:
parent
32add30c9d
commit
6ace072841
15 changed files with 637 additions and 68 deletions
|
|
@ -3,6 +3,8 @@ declare(strict_types=1);
|
|||
|
||||
namespace MailAccountAdmin\Frontend\Login;
|
||||
|
||||
use MailAccountAdmin\Common\PasswordHelper;
|
||||
use MailAccountAdmin\Common\SessionHelper;
|
||||
use MailAccountAdmin\Common\UserHelper;
|
||||
use MailAccountAdmin\Exceptions\AdminUserNotFoundException;
|
||||
use MailAccountAdmin\Frontend\BaseController;
|
||||
|
|
@ -15,11 +17,15 @@ class LoginController extends BaseController
|
|||
{
|
||||
/** @var AdminUserRepository */
|
||||
private $adminUserRepository;
|
||||
/** @var PasswordHelper */
|
||||
private $passwordHelper;
|
||||
|
||||
public function __construct(Twig $view, UserHelper $userHelper, AdminUserRepository $adminUserRepository)
|
||||
public function __construct(Twig $view, SessionHelper $sessionHelper, UserHelper $userHelper, AdminUserRepository $adminUserRepository,
|
||||
PasswordHelper $passwordHelper)
|
||||
{
|
||||
parent::__construct($view, $userHelper);
|
||||
parent::__construct($view, $sessionHelper, $userHelper);
|
||||
$this->adminUserRepository = $adminUserRepository;
|
||||
$this->passwordHelper = $passwordHelper;
|
||||
}
|
||||
|
||||
private function renderLoginPage(Response $response, array $renderData = []): Response
|
||||
|
|
@ -54,19 +60,18 @@ class LoginController extends BaseController
|
|||
|
||||
try {
|
||||
$user = $this->adminUserRepository->getUserByName($loginUsername);
|
||||
}
|
||||
catch (AdminUserNotFoundException $e) {
|
||||
} catch (AdminUserNotFoundException $e) {
|
||||
$user = null;
|
||||
}
|
||||
|
||||
if ($user === null || !password_verify($loginPassword, $user->getPasswordHash())) {
|
||||
if ($user === null || !$this->passwordHelper->verifyPassword($loginPassword, $user->getPasswordHash())) {
|
||||
return $this->renderLoginPage($response, ['error' => 'Wrong username or password!']);
|
||||
} elseif (!$user->isActive()) {
|
||||
return $this->renderLoginPage($response, ['error' => 'User is inactive!']);
|
||||
}
|
||||
|
||||
// Set login session
|
||||
$_SESSION['user_id'] = $user->getId();
|
||||
$this->sessionHelper->setUserId($user->getId());
|
||||
return $response
|
||||
->withHeader('Location', '/')
|
||||
->withStatus(303);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue