bundles/App/Controller/AbstractFrontendController.php line 82

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Pimcore\Controller\FrontendController;
  4. use Pimcore\Model\DataObject\Member;
  5. use Psr\Log\LoggerInterface;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\RequestStack;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  10. abstract class AbstractFrontendController extends FrontendController
  11. {
  12. protected $login = false;
  13. protected Request $request;
  14. protected SessionInterface $session;
  15. /**
  16. * @var Member
  17. */
  18. protected $member;
  19. public function __construct(LoggerInterface $logger, RequestStack $requestStack)
  20. {
  21. // dd(\Pimcore\Tool\Session::getReadonly());
  22. // dd($this->iseditmode);
  23. $this->request = $requestStack->getCurrentRequest();
  24. $this->session = $this->request->getSession();
  25. if ($this->session->has('login')) {
  26. $this->login = $this->session->get('login');
  27. }
  28. if ($this->request->getMethod() === 'POST') {
  29. // Login?
  30. if ($this->request->request->has('member') && $this->request->request->has('pw')) {
  31. $memberListing = new Member\Listing();
  32. $member = $memberListing->filterByUserName($this->request->request->get('member'));
  33. if ($member->count()) {
  34. $memberPw = $member->current()->getUserPassword();
  35. if (password_verify($this->request->request->get('pw'), $memberPw)) {
  36. $this->session->set('login', true);
  37. $this->session->set('memberId', $member->current()->getId());
  38. }
  39. }
  40. }
  41. }
  42. $this->updateMemberData();
  43. }
  44. private function updateMemberData()
  45. {
  46. if ($this->login) {
  47. $this->member = Member::getById($this->session->get('memberId'));
  48. }
  49. }
  50. /**
  51. * @Symfony\Component\Routing\Annotation\Route("{path}", name="logout", requirements={"path": "logout"})
  52. */
  53. public function logoutAction(Request $request)
  54. {
  55. $this->session->set('login', false);
  56. $this->session->set('member', null);
  57. return $this->redirect('/');
  58. }
  59. protected function getParams()
  60. {
  61. return [
  62. 'login' => $this->login,
  63. 'session' => $this->session,
  64. ];
  65. }
  66. protected function render(string $view, array $parameters = [], ?Response $response = null): Response
  67. {
  68. if (!$this->login && $this->document->getProperty('intern')) {
  69. return $this->redirect('/');
  70. }
  71. return parent::render($view, array_merge($this->getParams(), $parameters), $response);
  72. }
  73. }