diff --git a/app/modules/web/Controllers/ConfigManagerController.php b/app/modules/web/Controllers/ConfigManager/IndexController.php
similarity index 71%
rename from app/modules/web/Controllers/ConfigManagerController.php
rename to app/modules/web/Controllers/ConfigManager/IndexController.php
index bc75e145..8d8d32f1 100644
--- a/app/modules/web/Controllers/ConfigManagerController.php
+++ b/app/modules/web/Controllers/ConfigManager/IndexController.php
@@ -4,7 +4,7 @@
*
* @author nuxsmin
* @link https://syspass.org
- * @copyright 2012-2021, Rubén Domínguez nuxsmin@$syspass.org
+ * @copyright 2012-2022, Rubén Domínguez nuxsmin@$syspass.org
*
* This file is part of sysPass.
*
@@ -22,7 +22,7 @@
* along with sysPass. If not, see .
*/
-namespace SP\Modules\Web\Controllers;
+namespace SP\Modules\Web\Controllers\ConfigManager;
use DI\DependencyException;
use DI\NotFoundException;
@@ -31,30 +31,31 @@ use Psr\Container\NotFoundExceptionInterface;
use SP\Core\Acl\Acl;
use SP\Core\Acl\ActionsInterface;
use SP\Core\AppInfoInterface;
+use SP\Core\Application;
use SP\Core\Crypt\CryptSessionHandler;
use SP\Core\Events\Event;
use SP\Core\Exceptions\CheckException;
use SP\Core\Exceptions\ConstraintException;
use SP\Core\Exceptions\QueryException;
-use SP\Core\Exceptions\SessionTimeout;
use SP\Core\Exceptions\SPException;
use SP\Core\Language;
use SP\Core\MimeTypesInterface;
-use SP\Domain\Account\Services\AccountService;
-use SP\Domain\Auth\Services\AuthException;
-use SP\Domain\Config\Services\ConfigService;
+use SP\Domain\Account\AccountServiceInterface;
+use SP\Domain\Config\ConfigServiceInterface;
use SP\Domain\Crypt\Services\TemporaryMasterPassService;
use SP\Domain\Export\Services\BackupFiles;
use SP\Domain\Export\Services\XmlExportService;
use SP\Domain\Task\Services\Task;
-use SP\Domain\User\Services\UserGroupService;
-use SP\Domain\User\Services\UserProfileService;
-use SP\Domain\User\Services\UserService;
+use SP\Domain\User\UserGroupServiceInterface;
+use SP\Domain\User\UserProfileServiceInterface;
+use SP\Domain\User\UserServiceInterface;
use SP\Infrastructure\Common\Repositories\NoSuchItemException;
use SP\Infrastructure\Database\DatabaseUtil;
use SP\Infrastructure\File\FileException;
use SP\Infrastructure\File\FileHandler;
+use SP\Modules\Web\Controllers\ControllerBase;
use SP\Modules\Web\Controllers\Helpers\TabsHelper;
+use SP\Mvc\Controller\WebControllerHelper;
use SP\Mvc\View\Components\DataTab;
use SP\Mvc\View\Components\SelectItemAdapter;
use SP\Plugin\PluginManager;
@@ -68,9 +69,44 @@ use SP\Util\Util;
/**
* Class ConfigManagerController
*/
-final class ConfigManagerController extends ControllerBase
+final class IndexController extends ControllerBase
{
- protected ?TabsHelper $tabsHelper = null;
+ protected TabsHelper $tabsHelper;
+ private UserServiceInterface $userService;
+ private UserGroupServiceInterface $userGroupService;
+ private UserProfileServiceInterface $userProfileService;
+ private MimeTypesInterface $mimeTypes;
+ private DatabaseUtil $databaseUtil;
+ private ConfigServiceInterface $configService;
+ private AccountServiceInterface $accountService;
+ private PluginManager $pluginManager;
+
+ public function __construct(
+ Application $application,
+ WebControllerHelper $webControllerHelper,
+ TabsHelper $tabsHelper,
+ UserServiceInterface $userService,
+ UserGroupServiceInterface $userGroupService,
+ UserProfileServiceInterface $userProfileService,
+ MimeTypesInterface $mimeTypes,
+ DatabaseUtil $databaseUtil,
+ ConfigServiceInterface $configService,
+ AccountServiceInterface $accountService,
+ PluginManager $pluginManager
+ ) {
+ parent::__construct($application, $webControllerHelper);
+
+ $this->tabsHelper = $tabsHelper;
+ $this->userService = $userService;
+ $this->userGroupService = $userGroupService;
+ $this->userProfileService = $userProfileService;
+ $this->mimeTypes = $mimeTypes;
+ $this->databaseUtil = $databaseUtil;
+ $this->configService = $configService;
+ $this->accountService = $accountService;
+ $this->pluginManager = $pluginManager;
+ }
+
/**
* @throws ContainerExceptionInterface
@@ -91,8 +127,6 @@ final class ConfigManagerController extends ControllerBase
*/
protected function getTabs(): void
{
- $this->tabsHelper = $this->dic->get(TabsHelper::class);
-
if ($this->checkAccess(ActionsInterface::CONFIG_GENERAL)) {
$this->tabsHelper->addTab($this->getConfigGeneral());
}
@@ -144,9 +178,10 @@ final class ConfigManagerController extends ControllerBase
}
/**
- * @throws ContainerExceptionInterface
- * @throws NotFoundExceptionInterface
- * @throws CheckException
+ * @return \SP\Mvc\View\Components\DataTab
+ * @throws \SP\Core\Exceptions\CheckException
+ * @throws \SP\Core\Exceptions\ConstraintException
+ * @throws \SP\Core\Exceptions\QueryException
*/
protected function getConfigGeneral(): DataTab
{
@@ -178,32 +213,20 @@ final class ConfigManagerController extends ControllerBase
);
$template->assign(
'users',
- SelectItemAdapter::factory(
- UserService::getItemsBasic()
- )->getItemsFromModel()
+ SelectItemAdapter::factory($this->userService->getAllBasic())->getItemsFromModel()
);
$template->assign(
'userGroups',
- SelectItemAdapter::factory(
- UserGroupService::getItemsBasic()
- )->getItemsFromModel()
+ SelectItemAdapter::factory($this->userGroupService->getAllBasic())->getItemsFromModel()
);
$template->assign(
'userProfiles',
- SelectItemAdapter::factory(
- UserProfileService::getItemsBasic()
- )->getItemsFromModel()
+ SelectItemAdapter::factory($this->userProfileService->getAllBasic())->getItemsFromModel()
);
- $template->assign(
- 'curlIsAvailable',
- $this->extensionChecker->checkCurlAvailable()
- );
+ $template->assign('curlIsAvailable', $this->extensionChecker->checkCurlAvailable());
- $events = array_merge(
- LogInterface::EVENTS,
- $this->configData->getLogEvents()
- );
+ $events = array_merge(LogInterface::EVENTS, $this->configData->getLogEvents());
sort($events, SORT_STRING);
@@ -220,33 +243,23 @@ final class ConfigManagerController extends ControllerBase
}
/**
- * @throws DependencyException
- * @throws NotFoundException
- * @throws CheckException
- * @throws SPException
+ * @return \SP\Mvc\View\Components\DataTab
+ * @throws \SP\Core\Exceptions\CheckException
*/
protected function getAccountConfig(): DataTab
{
$template = clone $this->view;
$template->setBase('config');
$template->addTemplate('accounts');
- $template->assign(
- 'gdIsAvailable',
- $this->extensionChecker->checkGdAvailable()
- );
+ $template->assign('gdIsAvailable', $this->extensionChecker->checkGdAvailable());
$mimeTypesAvailable = array_map(
- static function ($value) {
- return $value['type'];
- },
- $this->dic->get(MimeTypesInterface::class)->getMimeTypes()
+ static fn($value) => $value['type'],
+ $this->mimeTypes->getMimeTypes()
);
$mimeTypes = SelectItemAdapter::factory(
- array_merge(
- $mimeTypesAvailable,
- $this->configData->getFilesAllowedMime()
- )
+ array_merge($mimeTypesAvailable, $this->configData->getFilesAllowedMime())
);
$template->assign(
@@ -279,9 +292,10 @@ final class ConfigManagerController extends ControllerBase
}
/**
- * @throws ContainerExceptionInterface
- * @throws NotFoundExceptionInterface
- * @throws CheckException
+ * @return \SP\Mvc\View\Components\DataTab
+ * @throws \SP\Core\Exceptions\CheckException
+ * @throws \SP\Core\Exceptions\ConstraintException
+ * @throws \SP\Core\Exceptions\QueryException
*/
protected function getLdapConfig(): DataTab
{
@@ -295,13 +309,11 @@ final class ConfigManagerController extends ControllerBase
);
$template->assign(
'userGroups',
- SelectItemAdapter::factory(UserGroupService::getItemsBasic())
- ->getItemsFromModel()
+ SelectItemAdapter::factory($this->userGroupService->getAllBasic())->getItemsFromModel()
);
$template->assign(
'userProfiles',
- SelectItemAdapter::factory(UserProfileService::getItemsBasic())
- ->getItemsFromModel()
+ SelectItemAdapter::factory($this->userProfileService->getAllBasic())->getItemsFromModel()
);
$serverTypes = [
@@ -343,8 +355,9 @@ final class ConfigManagerController extends ControllerBase
}
/**
- * @throws ContainerExceptionInterface
- * @throws NotFoundExceptionInterface
+ * @return \SP\Mvc\View\Components\DataTab
+ * @throws \SP\Core\Exceptions\ConstraintException
+ * @throws \SP\Core\Exceptions\QueryException
*/
protected function getMailConfig(): DataTab
{
@@ -355,23 +368,16 @@ final class ConfigManagerController extends ControllerBase
$template->assign('mailSecurity', ['SSL', 'TLS']);
$template->assign(
'userGroups',
- SelectItemAdapter::factory(
- UserGroupService::getItemsBasic()
- )->getItemsFromModel()
+ SelectItemAdapter::factory($this->userGroupService->getAllBasic())->getItemsFromModel()
);
$template->assign(
'userProfiles',
- SelectItemAdapter::factory(
- UserProfileService::getItemsBasic()
- )->getItemsFromModel()
+ SelectItemAdapter::factory($this->userProfileService->getAllBasic())->getItemsFromModel()
);
$mailEvents = $this->configData->getMailEvents();
- $events = array_merge(
- MailHandler::EVENTS,
- $mailEvents
- );
+ $events = array_merge(MailHandler::EVENTS, $mailEvents);
sort($events, SORT_STRING);
@@ -401,48 +407,39 @@ final class ConfigManagerController extends ControllerBase
$template->setBase('config');
$template->addTemplate('encryption');
- $numAccounts = $this->dic->get(AccountService::class)->getTotalNumAccounts();
+ $numAccounts = $this->accountService->getTotalNumAccounts();
$template->assign('numAccounts', $numAccounts);
if ($numAccounts > 150) {
- $template->assign(
- 'taskId',
- Task::genTaskId('masterpass')
- );
+ $template->assign('taskId', Task::genTaskId('masterpass'));
}
- $configService = $this->dic->get(ConfigService::class);
-
$template->assign(
'lastUpdateMPass',
- $configService->getByParam('lastupdatempass', 0)
+ $this->configService->getByParam('lastupdatempass', 0)
);
$template->assign(
'tempMasterPassTime',
- $configService->getByParam(TemporaryMasterPassService::PARAM_TIME, 0)
+ $this->configService->getByParam(TemporaryMasterPassService::PARAM_TIME, 0)
);
$template->assign(
'tempMasterMaxTime',
- $configService->getByParam(TemporaryMasterPassService::PARAM_MAX_TIME, 0)
+ $this->configService->getByParam(TemporaryMasterPassService::PARAM_MAX_TIME, 0)
);
$tempMasterAttempts = sprintf(
'%d/%d',
- $configService->getByParam(TemporaryMasterPassService::PARAM_ATTEMPTS, 0),
+ $this->configService->getByParam(TemporaryMasterPassService::PARAM_ATTEMPTS, 0),
TemporaryMasterPassService::MAX_ATTEMPTS
);
$template->assign('tempMasterAttempts', $tempMasterAttempts);
- $template->assign(
- 'tempMasterPass',
- $this->session->getTemporaryMasterPass()
- );
+ $template->assign('tempMasterPass', $this->session->getTemporaryMasterPass());
$template->assign(
'userGroups',
- SelectItemAdapter::factory(UserGroupService::getItemsBasic())
- ->getItemsFromModel()
+ SelectItemAdapter::factory($this->userGroupService->getAllBasic())->getItemsFromModel()
);
return new DataTab(__('Encryption'), $template);
@@ -522,8 +519,9 @@ final class ConfigManagerController extends ControllerBase
}
/**
- * @throws ContainerExceptionInterface
- * @throws NotFoundExceptionInterface
+ * @return \SP\Mvc\View\Components\DataTab
+ * @throws \SP\Core\Exceptions\ConstraintException
+ * @throws \SP\Core\Exceptions\QueryException
*/
protected function getImportConfig(): DataTab
{
@@ -533,12 +531,12 @@ final class ConfigManagerController extends ControllerBase
$template->assign(
'userGroups',
- SelectItemAdapter::factory(UserGroupService::getItemsBasic())
+ SelectItemAdapter::factory($this->userGroupService->getAllBasic())
->getItemsFromModelSelected([$this->userData->getUserGroupId()])
);
$template->assign(
'users',
- SelectItemAdapter::factory(UserService::getItemsBasic())
+ SelectItemAdapter::factory($this->userService->getAllBasic())
->getItemsFromModelSelected([$this->userData->getId()])
);
@@ -546,10 +544,9 @@ final class ConfigManagerController extends ControllerBase
}
/**
- * @throws DependencyException
- * @throws NotFoundException
- * @throws NoSuchItemException
+ * @return \SP\Mvc\View\Components\DataTab
* @throws \SP\Domain\Common\Services\ServiceException
+ * @throws \SP\Infrastructure\Common\Repositories\NoSuchItemException
*/
protected function getInfo(): DataTab
{
@@ -557,37 +554,23 @@ final class ConfigManagerController extends ControllerBase
$template->setBase('config');
$template->addTemplate('info');
- $databaseUtil = $this->dic->get(DatabaseUtil::class);
-
- $template->assign('dbInfo', $databaseUtil->getDBinfo());
- $template->assign(
- 'dbName',
- $this->configData->getDbName().'@'.$this->configData->getDbHost()
- );
+ $template->assign('dbInfo', $this->databaseUtil->getDBinfo());
+ $template->assign('dbName', $this->configData->getDbName().'@'.$this->configData->getDbHost());
$template->assign(
'configBackupDate',
- date('r', $this->dic->get(ConfigService::class)->getByParam('config_backup_date', 0))
- );
- $template->assign(
- 'plugins',
- $this->dic->get(PluginManager::class)->getLoadedPlugins()
+ date('r', $this->configService->getByParam('config_backup_date', 0))
);
+ $template->assign('plugins', $this->pluginManager->getLoadedPlugins());
$template->assign(
'locale',
Language::$localeStatus ?: sprintf('%s (%s)', $this->configData->getSiteLang(), __('Not installed'))
);
- $template->assign(
- 'securedSession',
- CryptSessionHandler::$isSecured
- );
+ $template->assign('securedSession', CryptSessionHandler::$isSecured);
$template->assign(
'missingExtensions',
$this->extensionChecker->getMissing()
);
- $template->assign(
- 'downloadRate',
- round(Util::getMaxDownloadChunk() / 1024 / 1024)
- );
+ $template->assign('downloadRate', round(Util::getMaxDownloadChunk() / 1024 / 1024));
$isDemo = $this->configData->isDemoEnabled();
@@ -597,9 +580,7 @@ final class ConfigManagerController extends ControllerBase
);
$template->assign(
'downloadLog',
- !$isDemo
- && is_readable(LOG_FILE)
- && $this->userData->getIsAdminApp()
+ !$isDemo && is_readable(LOG_FILE) && $this->userData->getIsAdminApp()
);
return new DataTab(__('Information'), $template);
@@ -611,10 +592,8 @@ final class ConfigManagerController extends ControllerBase
}
/**
- * @throws AuthException
- * @throws DependencyException
- * @throws NotFoundException
- * @throws SessionTimeout
+ * @throws \SP\Core\Exceptions\SessionTimeout
+ * @throws \SP\Domain\Auth\Services\AuthException
*/
protected function initialize(): void
{
diff --git a/app/modules/web/Controllers/ControllerBase.php b/app/modules/web/Controllers/ControllerBase.php
index 195d97f8..881d79d6 100644
--- a/app/modules/web/Controllers/ControllerBase.php
+++ b/app/modules/web/Controllers/ControllerBase.php
@@ -125,7 +125,7 @@ abstract class ControllerBase
$this->initialize();
}
} catch (SessionTimeout $sessionTimeout) {
- $this->handleSessionTimeout(static fn() => true);
+ $this->handleSessionTimeout(fn() => true);
throw $sessionTimeout;
}
diff --git a/app/modules/web/Controllers/SecurityManagerController.php b/app/modules/web/Controllers/SecurityManager/IndexController.php
similarity index 65%
rename from app/modules/web/Controllers/SecurityManagerController.php
rename to app/modules/web/Controllers/SecurityManager/IndexController.php
index 40895aec..7fc02603 100644
--- a/app/modules/web/Controllers/SecurityManagerController.php
+++ b/app/modules/web/Controllers/SecurityManager/IndexController.php
@@ -4,7 +4,7 @@
*
* @author nuxsmin
* @link https://syspass.org
- * @copyright 2012-2021, Rubén Domínguez nuxsmin@$syspass.org
+ * @copyright 2012-2022, Rubén Domínguez nuxsmin@$syspass.org
*
* This file is part of sysPass.
*
@@ -22,38 +22,61 @@
* along with sysPass. If not, see .
*/
-namespace SP\Modules\Web\Controllers;
+namespace SP\Modules\Web\Controllers\SecurityManager;
-use DI\DependencyException;
-use DI\NotFoundException;
use SP\Core\Acl\Acl;
use SP\Core\Acl\ActionsInterface;
+use SP\Core\Application;
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\Auth\Services\AuthException;
-use SP\Domain\Security\Services\EventlogService;
-use SP\Domain\Security\Services\TrackService;
+use SP\Domain\Security\EventlogServiceInterface;
+use SP\Domain\Security\TrackServiceInterface;
use SP\Html\DataGrid\DataGridTab;
+use SP\Modules\Web\Controllers\ControllerBase;
use SP\Modules\Web\Controllers\Helpers\Grid\EventlogGrid;
use SP\Modules\Web\Controllers\Helpers\Grid\TrackGrid;
use SP\Modules\Web\Controllers\Helpers\TabsGridHelper;
+use SP\Mvc\Controller\WebControllerHelper;
/**
- * Class SecurityManagerController
+ * Class IndexController
*
* @package SP\Modules\Web\Controllers
*/
-final class SecurityManagerController extends ControllerBase
+final class IndexController extends ControllerBase
{
- protected ?ItemSearchData $itemSearchData = null;
- protected ?TabsGridHelper $tabsGridHelper = null;
+ protected ItemSearchData $itemSearchData;
+ protected TabsGridHelper $tabsGridHelper;
+ private EventlogGrid $eventlogGrid;
+ private TrackGrid $trackGrid;
+ private EventlogServiceInterface $eventlogService;
+ private TrackServiceInterface $trackService;
+
+ public function __construct(
+ Application $application,
+ WebControllerHelper $webControllerHelper,
+ TabsGridHelper $tabsGridHelper,
+ EventlogGrid $eventlogGrid,
+ TrackGrid $trackGrid,
+ EventlogServiceInterface $eventlogService,
+ TrackServiceInterface $trackService
+ ) {
+ parent::__construct($application, $webControllerHelper);
+
+ $this->checkLoggedIn();
+
+ $this->tabsGridHelper = $tabsGridHelper;
+ $this->eventlogGrid = $eventlogGrid;
+ $this->trackGrid = $trackGrid;
+ $this->eventlogService = $eventlogService;
+ $this->trackService = $trackService;
+
+ $this->itemSearchData = new ItemSearchData();
+ }
/**
- * @throws DependencyException
- * @throws NotFoundException
* @throws ConstraintException
* @throws QueryException
*/
@@ -65,18 +88,13 @@ final class SecurityManagerController extends ControllerBase
/**
* 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::EVENTLOG)
&& $this->configData->isLogEnabled()
) {
@@ -104,34 +122,24 @@ final class SecurityManagerController extends ControllerBase
* Returns eventlog data tab
*
* @return DataGridTab
- * @throws DependencyException
- * @throws NotFoundException
* @throws ConstraintException
* @throws QueryException
*/
protected function getEventlogList(): DataGridTab
{
- return $this->dic->get(EventlogGrid::class)
- ->getGrid($this->dic->get(EventlogService::class)
- ->search($this->itemSearchData))
- ->updatePager();
+ return $this->eventlogGrid->getGrid($this->eventlogService->search($this->itemSearchData))->updatePager();
}
/**
* Returns tracks data tab
*
* @return DataGridTab
- * @throws DependencyException
- * @throws NotFoundException
* @throws ConstraintException
* @throws QueryException
*/
protected function getTracksList(): DataGridTab
{
- return $this->dic->get(TrackGrid::class)
- ->getGrid($this->dic->get(TrackService::class)
- ->search($this->itemSearchData))
- ->updatePager();
+ return $this->trackGrid->getGrid($this->trackService->search($this->itemSearchData))->updatePager();
}
/**
@@ -141,15 +149,4 @@ final class SecurityManagerController extends ControllerBase
{
return $this->tabsGridHelper;
}
-
- /**
- * @throws AuthException
- * @throws DependencyException
- * @throws NotFoundException
- * @throws SessionTimeout
- */
- protected function initialize(): void
- {
- $this->checkLoggedIn();
- }
}
\ No newline at end of file