. */ namespace SP\Modules\Web\Controllers\AccessManager; use SP\Core\Application; use SP\Core\Events\Event; use SP\Domain\Account\Ports\PublicLinkService; use SP\Domain\Auth\Ports\AuthTokenService; use SP\Domain\Auth\Services\AuthException; use SP\Domain\Core\Acl\AclActionsInterface; use SP\Domain\Core\Dtos\ItemSearchDto; use SP\Domain\Core\Exceptions\ConstraintException; use SP\Domain\Core\Exceptions\QueryException; use SP\Domain\Core\Exceptions\SessionTimeout; use SP\Domain\User\Ports\UserGroupService; use SP\Domain\User\Ports\UserProfileService; use SP\Domain\User\Ports\UserService; use SP\Modules\Web\Controllers\ControllerBase; use SP\Modules\Web\Controllers\Helpers\Grid\AuthTokenGrid; use SP\Modules\Web\Controllers\Helpers\Grid\PublicLinkGrid; use SP\Modules\Web\Controllers\Helpers\Grid\UserGrid; use SP\Modules\Web\Controllers\Helpers\Grid\UserGroupGrid; use SP\Modules\Web\Controllers\Helpers\Grid\UserProfileGrid; use SP\Modules\Web\Controllers\Helpers\TabsGridHelper; use SP\Mvc\Controller\WebControllerHelper; /** * Class IndexController * * @package SP\Modules\Web\Controllers */ final class IndexController extends ControllerBase { /** * @throws AuthException * @throws SessionTimeout */ public function __construct( Application $application, WebControllerHelper $webControllerHelper, protected TabsGridHelper $tabsGridHelper, private readonly UserGrid $userGrid, private readonly UserGroupGrid $userGroupGrid, private readonly UserProfileGrid $userProfileGrid, private readonly AuthTokenGrid $authTokenGrid, private readonly PublicLinkGrid $publicLinkGrid, private readonly UserService $userService, private readonly UserGroupService $userGroupService, private readonly UserProfileService $userProfileService, private readonly AuthTokenService $authTokenService, private readonly PublicLinkService $publicLinkService ) { parent::__construct($application, $webControllerHelper); $this->checkLoggedIn(); } /** * @throws ConstraintException * @throws QueryException */ public function indexAction(): void { $this->getGridTabs(); } /** * Returns a tabbed grid with items * * @throws ConstraintException * @throws QueryException */ protected function getGridTabs(): void { $itemSearchData = new ItemSearchDto(null, 0, $this->configData->getAccountCount()); if ($this->checkAccess(AclActionsInterface::USER)) { $this->tabsGridHelper->addTab( $this->userGrid->getGrid($this->userService->search($itemSearchData))->updatePager() ); } if ($this->checkAccess(AclActionsInterface::GROUP)) { $this->tabsGridHelper->addTab( $this->userGroupGrid->getGrid($this->userGroupService->search($itemSearchData))->updatePager() ); } if ($this->checkAccess(AclActionsInterface::PROFILE)) { $this->tabsGridHelper->addTab( $this->userProfileGrid->getGrid($this->userProfileService->search($itemSearchData))->updatePager() ); } if ($this->checkAccess(AclActionsInterface::AUTHTOKEN)) { $this->tabsGridHelper->addTab( $this->authTokenGrid->getGrid($this->authTokenService->search($itemSearchData))->updatePager() ); } if ($this->configData->isPublinksEnabled() && $this->checkAccess(AclActionsInterface::PUBLICLINK) ) { $this->tabsGridHelper->addTab( $this->publicLinkGrid->getGrid($this->publicLinkService->search($itemSearchData))->updatePager() ); } $this->eventDispatcher->notify('show.itemlist.accesses', new Event($this)); $this->tabsGridHelper->renderTabs( $this->acl->getRouteFor(AclActionsInterface::ACCESS_MANAGE), $this->request->analyzeInt('tabIndex', 0) ); $this->view(); } /** * @return TabsGridHelper */ public function getTabsGridHelper(): TabsGridHelper { return $this->tabsGridHelper; } }