Skip to content

Commit 9fd3b0c

Browse files
committed
refactor: moved session to abstract controller (#3834)
1 parent b8435c4 commit 9fd3b0c

23 files changed

+65
-100
lines changed

phpmyfaq/src/phpMyFAQ/Controller/AbstractController.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
use Symfony\Component\HttpFoundation\JsonResponse;
3636
use Symfony\Component\HttpFoundation\Request;
3737
use Symfony\Component\HttpFoundation\Response;
38+
use Symfony\Component\HttpFoundation\Session\Session;
39+
use Symfony\Component\HttpFoundation\Session\SessionInterface;
3840
use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
3941
use Twig\Error\LoaderError;
4042
use Twig\Extension\ExtensionInterface;
@@ -57,6 +59,8 @@ abstract class AbstractController
5759

5860
protected ?CurrentUser $currentUser = null;
5961

62+
protected ?SessionInterface $session = null;
63+
6064
/** @var ExtensionInterface[] */
6165
private array $twigExtensions = [];
6266

@@ -66,14 +70,14 @@ abstract class AbstractController
6670
/**
6771
* Check if the FAQ should be secured.
6872
*
69-
* @throws Exception
7073
* @throws \Exception
7174
*/
7275
public function __construct()
7376
{
7477
$this->container = $this->createContainer();
7578
$this->configuration = $this->container->get(id: 'phpmyfaq.configuration');
7679
$this->currentUser = $this->container->get(id: 'phpmyfaq.user.current_user');
80+
$this->session = $this->container->get(id: 'session');
7781
TwigWrapper::setTemplateSetName($this->configuration->getTemplateSet());
7882
$this->isSecured();
7983
}

phpmyfaq/src/phpMyFAQ/Controller/Administration/AbstractAdministrationController.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,6 @@ protected function getHeader(Request $request): array
4545
$adminHelper = $this->container->get(id: 'phpmyfaq.admin.helper');
4646
$adminHelper->setUser($this->currentUser);
4747

48-
$session = $this->container->get(id: 'session');
49-
5048
$secLevelEntries = $this->getSecondLevelEntries($adminHelper);
5149
$pageFlags = $this->getPageFlags($request);
5250
$gravatarImage = $this->getGravatarImage();
@@ -71,7 +69,7 @@ protected function getHeader(Request $request): array
7169
'hasGravatarSupport' => $this->configuration->get(item: 'main.enableGravatarSupport'),
7270
'gravatarImage' => $gravatarImage,
7371
'msgChangePassword' => Translation::get(key: 'ad_menu_passwd'),
74-
'csrfTokenLogout' => Token::getInstance($session)->getTokenString('admin-logout'),
72+
'csrfTokenLogout' => Token::getInstance($this->session)->getTokenString('admin-logout'),
7573
'msgLogout' => Translation::get(key: 'admin_mainmenu_logout'),
7674
'secondLevelEntries' => $secLevelEntries,
7775
'menuUsers' => Translation::get(key: 'admin_mainmenu_users'),

phpmyfaq/src/phpMyFAQ/Controller/Administration/AdminLogController.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ public function index(Request $request): Response
4646
$this->userHasPermission(PermissionType::STATISTICS_ADMINLOG);
4747

4848
$adminLog = $this->container->get(id: 'phpmyfaq.admin.admin-log');
49-
$session = $this->container->get(id: 'session');
5049

5150
$itemsPerPage = 15;
5251
$page = Filter::filterVar($request->attributes->get('page'), FILTER_VALIDATE_INT, 1);
@@ -72,7 +71,7 @@ public function index(Request $request): Response
7271
...$this->getFooter(),
7372
'headerAdminLog' => Translation::get(key: 'ad_menu_adminlog'),
7473
'buttonDeleteAdminLog' => Translation::get(key: 'ad_adminlog_del_older_30d'),
75-
'csrfDeleteAdminLogToken' => Token::getInstance($session)->getTokenString('delete-adminlog'),
74+
'csrfDeleteAdminLogToken' => Token::getInstance($this->session)->getTokenString('delete-adminlog'),
7675
'currentLocale' => $this->configuration->getLanguage()->getLanguage(),
7776
'pagination' => $pagination->render(),
7877
'msgId' => Translation::get(key: 'ad_categ_id'),

phpmyfaq/src/phpMyFAQ/Controller/Administration/Api/ConfigurationController.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,9 @@ public function activateMaintenanceMode(Request $request): JsonResponse
7676
{
7777
$this->userHasPermission(PermissionType::CONFIGURATION_EDIT);
7878

79-
$session = $this->container->get(id: 'session');
80-
8179
$data = json_decode($request->getContent());
8280

83-
if (!Token::getInstance($session)->verifyToken('activate-maintenance-mode', $data->csrf)) {
81+
if (!Token::getInstance($this->session)->verifyToken('activate-maintenance-mode', $data->csrf)) {
8482
return $this->json(['error' => Translation::get(key: 'msgNoPermission')], Response::HTTP_UNAUTHORIZED);
8583
}
8684

phpmyfaq/src/phpMyFAQ/Controller/Administration/Api/FaqController.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
use Symfony\Component\HttpFoundation\Request;
5252
use Symfony\Component\HttpFoundation\Response;
5353
use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
54-
use Symfony\Component\Routing\Annotation\Route;
54+
use Symfony\Component\Routing\Attribute\Route;
5555

5656
final class FaqController extends AbstractController
5757
{
@@ -716,14 +716,12 @@ public function import(Request $request): JsonResponse
716716
{
717717
$this->userHasPermission(PermissionType::FAQ_ADD);
718718

719-
$session = $this->container->get(id: 'session');
720-
721719
$file = $request->files->get(key: 'file');
722720
if (!isset($file)) {
723721
return $this->json(['error' => 'Bad request: There is no file submitted.'], Response::HTTP_BAD_REQUEST);
724722
}
725723

726-
if (!Token::getInstance($session)->verifyToken(
724+
if (!Token::getInstance($this->session)->verifyToken(
727725
page: 'importfaqs',
728726
requestToken: $request->attributes->get(key: 'csrf'),
729727
)) {

phpmyfaq/src/phpMyFAQ/Controller/Administration/Api/ImageController.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,11 @@ public function upload(Request $request): JsonResponse
4040
{
4141
$this->userHasPermission(PermissionType::FAQ_EDIT);
4242

43-
$session = $this->container->get(id: 'session');
44-
4543
$uploadDir = PMF_CONTENT_DIR . '/user/images/';
4644
$validFileExtensions = ['gif', 'jpg', 'jpeg', 'png', 'webp', 'svg', 'mov', 'mp4', 'webm'];
4745
$timestamp = time();
4846

49-
if (!Token::getInstance($session)->verifyToken('pmf-csrf-token', $request->query->get('csrf'))) {
47+
if (!Token::getInstance($this->session)->verifyToken('pmf-csrf-token', $request->query->get('csrf'))) {
5048
return $this->json([
5149
'success' => false,
5250
'data' => ['code' => Response::HTTP_UNAUTHORIZED],

phpmyfaq/src/phpMyFAQ/Controller/Administration/Api/QuestionController.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,11 @@ public function toggle(Request $request): JsonResponse
7272
{
7373
$this->userHasPermission(PermissionType::QUESTION_ADD);
7474

75-
$session = $this->container->get(id: 'session');
7675
$question = $this->container->get(id: 'phpmyfaq.question');
7776

7877
$data = json_decode($request->getContent());
7978

80-
if (!Token::getInstance($session)->verifyToken('toggle-question-visibility', $data->csrfToken)) {
79+
if (!Token::getInstance($this->session)->verifyToken('toggle-question-visibility', $data->csrfToken)) {
8180
return $this->json(['error' => Translation::get(key: 'msgNoPermission')], Response::HTTP_UNAUTHORIZED);
8281
}
8382

phpmyfaq/src/phpMyFAQ/Controller/Administration/AttachmentsController.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ public function index(Request $request): Response
4747
$page = Filter::filterVar($request->query->get('page'), FILTER_VALIDATE_INT);
4848
$page = max(1, $page);
4949

50-
$session = $this->container->get(id: 'session');
5150
$collection = $this->container->get(id: 'phpmyfaq.attachment-collection');
5251

5352
$itemsPerPage = 24;
@@ -72,8 +71,8 @@ public function index(Request $request): Response
7271
'adminMsgTransToolLanguage' => Translation::get(key: 'msgTransToolLanguage'),
7372
'adminMsgAttachmentsFilesize' => Translation::get(key: 'msgAttachmentsFilesize'),
7473
'adminMsgAttachmentsMimeType' => Translation::get(key: 'msgAttachmentsMimeType'),
75-
'csrfTokenDeletion' => Token::getInstance($session)->getTokenString('delete-attachment'),
76-
'csrfTokenRefresh' => Token::getInstance($session)->getTokenString('refresh-attachment'),
74+
'csrfTokenDeletion' => Token::getInstance($this->session)->getTokenString('delete-attachment'),
75+
'csrfTokenRefresh' => Token::getInstance($this->session)->getTokenString('refresh-attachment'),
7776
'attachments' => $crumbs,
7877
'adminMsgButtonDelete' => Translation::get(key: 'ad_gen_delete'),
7978
'adminMsgFaqTitle' => Translation::get(key: 'ad_entry_faq_record'),

phpmyfaq/src/phpMyFAQ/Controller/Administration/CategoryController.php

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ public function index(Request $request): Response
6060

6161
$categoryInfo = $category->getAllCategories();
6262

63-
$session = $this->container->get(id: 'session');
6463
$categoryOrder = $this->container->get(id: 'phpmyfaq.category.order');
6564
$orderedCategories = $categoryOrder->getAllCategories();
6665
$categoryTree = $categoryOrder->getCategoryTree($orderedCategories);
@@ -73,7 +72,7 @@ public function index(Request $request): Response
7372
return $this->render(file: '@admin/content/category.overview.twig', context: [
7473
...$this->getHeader($request),
7574
...$this->getFooter(),
76-
'csrfTokenInput' => Token::getInstance($session)->getTokenInput(page: 'category'),
75+
'csrfTokenInput' => Token::getInstance($this->session)->getTokenInput(page: 'category'),
7776
'categoryTree' => $categoryTree,
7877
'categoryInfo' => $categoryInfo,
7978
]);
@@ -97,13 +96,11 @@ public function add(Request $request): Response
9796
$category->setLanguage($this->configuration->getLanguage()->getLanguage());
9897
$category->loadCategories();
9998

100-
$session = $this->container->get(id: 'session');
101-
10299
return $this->render(file: '@admin/content/category.add.twig', context: [
103100
...$this->getHeader($request),
104101
...$this->getFooter(),
105102
...$this->getBaseTemplateVars(),
106-
'csrfTokenInput' => Token::getInstance($session)->getTokenInput(page: 'save-category'),
103+
'csrfTokenInput' => Token::getInstance($this->session)->getTokenInput(page: 'save-category'),
107104
'faqLangCode' => $this->configuration->getLanguage()->getLanguage(),
108105
'parentId' => 0,
109106
]);
@@ -325,7 +322,6 @@ public function edit(Request $request): Response
325322
default: 0,
326323
);
327324

328-
$session = $this->container->get(id: 'session');
329325
$userHelper = $this->container->get(id: 'phpmyfaq.helper.user-helper');
330326
$categoryPermission = $this->container->get(id: 'phpmyfaq.category.permission');
331327

@@ -390,7 +386,7 @@ public function edit(Request $request): Response
390386
'categoryId' => $categoryId,
391387
'categoryLanguage' => $categoryEntity->getLang(),
392388
'parentId' => $categoryEntity->getParentId(),
393-
'csrfInputToken' => Token::getInstance($session)->getTokenInput(page: 'update-category'),
389+
'csrfInputToken' => Token::getInstance($this->session)->getTokenInput(page: 'update-category'),
394390
'categoryImage' => $categoryEntity->getImage(),
395391
'categoryName' => $categoryEntity->getName(),
396392
'categoryDescription' => $categoryEntity->getDescription(),
@@ -490,8 +486,6 @@ public function translate(Request $request): Response
490486

491487
[$currentAdminUser, $currentAdminGroups] = CurrentUser::getCurrentUserGroupId($this->currentUser);
492488

493-
$session = $this->container->get(id: 'session');
494-
495489
$categoryPermission = new CategoryPermission($this->configuration);
496490
$userHelper = new UserHelper($this->currentUser);
497491

@@ -529,7 +523,7 @@ public function translate(Request $request): Response
529523
'permLevel' => $this->configuration->get(item: 'security.permLevel'),
530524
'groupPermission' => $groupPermission[0] ?? -1,
531525
'userPermission' => $userPermission[0] ?? -1,
532-
'csrfInputToken' => Token::getInstance($session)->getTokenInput(page: 'update-category'),
526+
'csrfInputToken' => Token::getInstance($this->session)->getTokenInput(page: 'update-category'),
533527
'categoryNameLabel' => Translation::get(key: 'categoryNameLabel'),
534528
'ad_categ_lang' => Translation::get(key: 'ad_categ_lang'),
535529
'langToTranslate' => $langOptions, // deprecated in the future; generated from data service now
@@ -766,11 +760,10 @@ public function update(Request $request): Response
766760
*/
767761
private function getBaseTemplateVars(): array
768762
{
769-
$session = $this->container->get(id: 'session');
770763
$userHelper = $this->container->get(id: 'phpmyfaq.helper.user-helper');
771764

772765
return [
773-
'csrfTokenInput' => Token::getInstance($session)->getTokenInput(page: 'save-category'),
766+
'csrfTokenInput' => Token::getInstance($this->session)->getTokenInput(page: 'save-category'),
774767
'userSelection' => $userHelper->getAllUsersForTemplate(),
775768
'permLevel' => $this->configuration->get(item: 'security.permLevel'),
776769
'msgAccessAllUsers' => Translation::get(key: 'msgAccessAllUsers'),

phpmyfaq/src/phpMyFAQ/Controller/Administration/FaqController.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,12 @@ public function index(Request $request): Response
7171
$categoryRelation->setGroups($currentAdminGroups);
7272

7373
$comments = $this->container->get(id: 'phpmyfaq.comments');
74-
$sessions = $this->container->get(id: 'session');
7574

7675
return $this->render('@admin/content/faq.overview.twig', [
7776
...$this->getHeader($request),
7877
...$this->getFooter(),
79-
'csrfTokenSearch' => Token::getInstance($sessions)->getTokenInput('pmf-csrf-token'),
80-
'csrfTokenOverview' => Token::getInstance($sessions)->getTokenString('pmf-csrf-token'),
78+
'csrfTokenSearch' => Token::getInstance($this->session)->getTokenInput('pmf-csrf-token'),
79+
'csrfTokenOverview' => Token::getInstance($this->session)->getTokenString('pmf-csrf-token'),
8180
'categories' => $category->getCategoryTree(),
8281
'numberOfRecords' => $categoryRelation->getNumberOfFaqsPerCategory(),
8382
'numberOfComments' => $comments->getNumberOfCommentsByCategory(),
@@ -602,8 +601,7 @@ public function answer(Request $request): Response
602601
*/
603602
private function getBaseTemplateVars(): array
604603
{
605-
$session = $this->container->get(id: 'session');
606-
$token = Token::getInstance($session);
604+
$token = Token::getInstance($this->session);
607605

608606
$canAddAttachments = $this->currentUser->perm->hasPermission(
609607
$this->currentUser->getUserId(),

0 commit comments

Comments
 (0)