. */ namespace SP\Modules\Web\Controllers; use DI\DependencyException; use DI\NotFoundException; use SP\Core\Acl\Acl; use SP\Core\Acl\ActionsInterface; use SP\Core\Events\Event; use SP\Core\Exceptions\ConstraintException; use SP\Core\Exceptions\QueryException; use SP\Core\Exceptions\SessionTimeout; use SP\DataModel\ItemSearchData; use SP\Domain\Account\Services\PublicLinkService; use SP\Domain\Auth\Services\AuthException; use SP\Domain\Auth\Services\AuthTokenService; use SP\Domain\User\Services\UserGroupService; use SP\Domain\User\Services\UserProfileService; use SP\Domain\User\Services\UserService; use SP\Html\DataGrid\DataGridTab; 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; /** * Class AccessManagerController * * @package SP\Modules\Web\Controllers */ final class AccessManagerController extends ControllerBase { protected ?ItemSearchData $itemSearchData = null; protected ?TabsGridHelper $tabsGridHelper = null; /** * @throws DependencyException * @throws NotFoundException * @throws ConstraintException * @throws QueryException */ public function indexAction(): void { $this->getGridTabs(); } /** * Returns a tabbed grid with items * * @throws DependencyException * @throws NotFoundException * @throws ConstraintException * @throws QueryException */ protected function getGridTabs(): void { $this->itemSearchData = new ItemSearchData(); $this->itemSearchData->setLimitCount($this->configData->getAccountCount()); $this->tabsGridHelper = $this->dic->get(TabsGridHelper::class); if ($this->checkAccess(ActionsInterface::USER)) { $this->tabsGridHelper->addTab($this->getUsersList()); } if ($this->checkAccess(ActionsInterface::GROUP)) { $this->tabsGridHelper->addTab($this->getUsersGroupList()); } if ($this->checkAccess(ActionsInterface::PROFILE)) { $this->tabsGridHelper->addTab($this->getUsersProfileList()); } if ($this->checkAccess(ActionsInterface::AUTHTOKEN)) { $this->tabsGridHelper->addTab($this->getAuthTokensList()); } if ($this->configData->isPublinksEnabled() && $this->checkAccess(ActionsInterface::PUBLICLINK)) { $this->tabsGridHelper->addTab($this->getPublicLinksList()); } $this->eventDispatcher->notifyEvent( 'show.itemlist.accesses', new Event($this) ); $this->tabsGridHelper->renderTabs( Acl::getActionRoute(ActionsInterface::ACCESS_MANAGE), $this->request->analyzeInt('tabIndex', 0)); $this->view(); } /** * Returns users' data tab * * @return DataGridTab * @throws DependencyException * @throws NotFoundException * @throws ConstraintException * @throws QueryException */ protected function getUsersList(): DataGridTab { return $this->dic->get(UserGrid::class) ->getGrid($this->dic->get(UserService::class) ->search($this->itemSearchData)) ->updatePager(); } /** * Returns users group data tab * * @return DataGridTab * @throws DependencyException * @throws NotFoundException * @throws ConstraintException * @throws QueryException */ protected function getUsersGroupList(): DataGridTab { return $this->dic->get(UserGroupGrid::class) ->getGrid($this->dic->get(UserGroupService::class) ->search($this->itemSearchData)) ->updatePager(); } /** * Returns users profile data tab * * @return DataGridTab * @throws DependencyException * @throws NotFoundException * @throws ConstraintException * @throws QueryException */ protected function getUsersProfileList(): DataGridTab { return $this->dic->get(UserProfileGrid::class) ->getGrid($this->dic->get(UserProfileService::class) ->search($this->itemSearchData)) ->updatePager(); } /** * Returns API tokens data tab * * @return DataGridTab * @throws DependencyException * @throws NotFoundException * @throws ConstraintException * @throws QueryException */ protected function getAuthTokensList(): DataGridTab { return $this->dic->get(AuthTokenGrid::class) ->getGrid($this->dic->get(AuthTokenService::class) ->search($this->itemSearchData)) ->updatePager(); } /** * Returns public links data tab * * @return DataGridTab * @throws DependencyException * @throws NotFoundException * @throws ConstraintException * @throws QueryException */ protected function getPublicLinksList(): DataGridTab { return $this->dic->get(PublicLinkGrid::class) ->getGrid($this->dic->get(PublicLinkService::class) ->search($this->itemSearchData)) ->updatePager(); } /** * @return TabsGridHelper */ public function getTabsGridHelper(): TabsGridHelper { return $this->tabsGridHelper; } /** * @throws AuthException * @throws DependencyException * @throws NotFoundException * @throws SessionTimeout */ protected function initialize(): void { $this->checkLoggedIn(); } }