diff --git a/app/config/actions.xml b/app/config/actions.xml index d4480928..33c647ea 100644 --- a/app/config/actions.xml +++ b/app/config/actions.xml @@ -57,9 +57,9 @@ 63 - APITOKEN + AUTHTOKEN Gestión Autorizaciones API - apiToken/index + authToken/index 64 @@ -339,33 +339,33 @@ 630 - APITOKEN_CREATE + AUTHTOKEN_CREATE Nuevo Token API - apiToken/create + authToken/create 631 - APITOKEN_VIEW + AUTHTOKEN_VIEW Ver Token API - apiToken/view + authToken/view 632 - APITOKEN_EDIT + AUTHTOKEN_EDIT Editar Token API - apiToken/edit + authToken/edit 633 - APITOKEN_DELETE + AUTHTOKEN_DELETE Eliminar Token API - apiToken/delete + authToken/delete 635 - APITOKEN_SEARCH + AUTHTOKEN_SEARCH Buscar Token API - apiToken/search + authToken/search 640 diff --git a/app/modules/api/Controllers/AccountController.php b/app/modules/api/Controllers/AccountController.php index e918d5b4..743022af 100644 --- a/app/modules/api/Controllers/AccountController.php +++ b/app/modules/api/Controllers/AccountController.php @@ -24,30 +24,29 @@ namespace SP\Modules\Api\Controllers; +use SP\Account\AccountSearchFilter; use SP\Api\ApiResponse; use SP\Core\Acl\ActionsInterface; use SP\Core\Events\Event; use SP\Core\Events\EventMessage; use SP\Core\Exceptions\ValidationException; -use SP\Modules\Api\Controllers\Traits\ResponseTrait; use SP\Modules\Web\Forms\AccountForm; use SP\Services\Account\AccountService; /** * Class AccountController + * * @package api\Controllers */ class AccountController extends ControllerBase { - use ResponseTrait; - /** * @var AccountService */ protected $accountService; /** - * Saves create action + * createAction */ public function createAction() { @@ -80,6 +79,24 @@ class AccountController extends ControllerBase } } + /** + * searchAction + */ + public function searchAction() + { + try { + $this->apiService->authenticate(ActionsInterface::ACCOUNT_SEARCH); + + $accountSearchFilter = new AccountSearchFilter(); + + $this->accountService->getByFilter($accountSearchFilter); + } catch (\Exception $e) { + $this->returnResponseException($e); + + processException($e); + } + } + /** * @throws \DI\DependencyException * @throws \DI\NotFoundException diff --git a/app/modules/api/Controllers/ControllerBase.php b/app/modules/api/Controllers/ControllerBase.php index dde00655..0326a329 100644 --- a/app/modules/api/Controllers/ControllerBase.php +++ b/app/modules/api/Controllers/ControllerBase.php @@ -25,11 +25,17 @@ namespace SP\Modules\Api\Controllers; use DI\Container; -use SP\Core\Context\ApiContext; +use Klein\Klein; +use SP\Api\ApiResponse; +use SP\Api\JsonRpcResponse; +use SP\Core\Context\StatelessContext; use SP\Core\Events\EventDispatcher; +use SP\Core\Exceptions\SPException; +use SP\Services\Api\ApiService; /** * Class ControllerBase + * * @package SP\Modules\Api\Controllers */ abstract class ControllerBase @@ -47,27 +53,40 @@ abstract class ControllerBase */ protected $actionName; /** - * @var ApiContext + * @var StatelessContext */ protected $context; /** * @var EventDispatcher */ protected $eventDispatcher; + /** + * @var ApiService + */ + protected $apiService; + /** + * @var Klein + */ + protected $router; /** * Constructor * * @param Container $container - * @param $actionName - * @throws \Psr\Container\ContainerExceptionInterface - * @throws \Psr\Container\NotFoundExceptionInterface + * @param string $actionName + * @param mixed $requesData + * @throws \DI\DependencyException + * @throws \DI\NotFoundException */ - public final function __construct(Container $container, $actionName) + public final function __construct(Container $container, $actionName, $requesData) { $this->dic = $container; - $this->context = $container->get(ApiContext::class); + $this->context = $container->get(StatelessContext::class); $this->eventDispatcher = $container->get(EventDispatcher::class); + $this->router = $container->get(Klein::class); + + $this->apiService = $container->get(ApiService::class); + $this->apiService->setRequestData($requesData); $this->controllerName = $this->getControllerName(); $this->actionName = $actionName; @@ -86,4 +105,38 @@ abstract class ControllerBase return substr($class, strrpos($class, '\\') + 1, -strlen('Controller')) ?: ''; } + + /** + * Devuelve una respuesta en formato JSON con el estado y el mensaje. + * + * {"jsonrpc": "2.0", "result": 19, "id": 3} + * + * @param ApiResponse $apiResponse + * @param int $id + * @return string La cadena en formato JSON + */ + protected function returnResponse(ApiResponse $apiResponse, $id = 0) + { + $this->router->response()->headers()->set('Content-type', 'application/json; charset=utf-8'); + + try { + exit(JsonRpcResponse::getResponse($apiResponse, $id)); + } catch (SPException $e) { + processException($e); + + exit(JsonRpcResponse::getResponseException($e, $id)); + } + } + + /** + * @param \Exception $e + * @param int $id + * @return string + */ + protected function returnResponseException(\Exception $e, $id = 0) + { + $this->router->response()->headers()->set('Content-type', 'application/json; charset=utf-8'); + + exit(JsonRpcResponse::getResponseException($e, $id)); + } } \ No newline at end of file diff --git a/app/modules/api/Init.php b/app/modules/api/Init.php index 8e95c2b6..97976f31 100644 --- a/app/modules/api/Init.php +++ b/app/modules/api/Init.php @@ -25,7 +25,7 @@ namespace SP\Modules\Api; use DI\Container; -use SP\Core\Context\ApiContext; +use SP\Core\Context\StatelessContext; use SP\Core\Exceptions\InitializationException; use SP\Core\Language; use SP\Core\ModuleBase; @@ -35,12 +35,13 @@ use SP\Util\HttpUtil; /** * Class Init + * * @package api */ class Init extends ModuleBase { /** - * @var ApiContext + * @var StatelessContext */ protected $context; /** @@ -59,12 +60,12 @@ class Init extends ModuleBase { parent::__construct($container); - $this->context = $container->get(ApiContext::class); + $this->context = $container->get(StatelessContext::class); $this->language = $container->get(Language::class); } /** - * @param $controller + * @param string $controller * @throws InitializationException * @throws \DI\DependencyException * @throws \DI\NotFoundException diff --git a/app/modules/web/Controllers/AccessManagerController.php b/app/modules/web/Controllers/AccessManagerController.php index 74b7e087..d9d1dfb3 100644 --- a/app/modules/web/Controllers/AccessManagerController.php +++ b/app/modules/web/Controllers/AccessManagerController.php @@ -92,7 +92,7 @@ class AccessManagerController extends ControllerBase $this->tabsGridHelper->addTab($this->getUsersProfileList()); } - if ($this->checkAccess(ActionsInterface::APITOKEN)) { + if ($this->checkAccess(ActionsInterface::AUTHTOKEN)) { $this->tabsGridHelper->addTab($this->getApiTokensList()); } @@ -153,7 +153,7 @@ class AccessManagerController extends ControllerBase */ protected function getApiTokensList() { - return $this->itemsGridHelper->getApiTokensGrid($this->dic->get(AuthTokenService::class)->search($this->itemSearchData))->updatePager(); + return $this->itemsGridHelper->getAuthTokensGrid($this->dic->get(AuthTokenService::class)->search($this->itemSearchData))->updatePager(); } /** diff --git a/app/modules/web/Controllers/ApiTokenController.php b/app/modules/web/Controllers/AuthTokenController.php similarity index 89% rename from app/modules/web/Controllers/ApiTokenController.php rename to app/modules/web/Controllers/AuthTokenController.php index 67272f21..f226b762 100644 --- a/app/modules/web/Controllers/ApiTokenController.php +++ b/app/modules/web/Controllers/AuthTokenController.php @@ -43,11 +43,11 @@ use SP\Services\AuthToken\AuthTokenService; use SP\Services\User\UserService; /** - * Class ApiTokenController + * Class AuthTokenController * * @package SP\Modules\Web\Controllers */ -class ApiTokenController extends ControllerBase implements CrudControllerInterface +class AuthTokenController extends ControllerBase implements CrudControllerInterface { use JsonTrait, ItemTrait; @@ -64,7 +64,7 @@ class ApiTokenController extends ControllerBase implements CrudControllerInterfa */ public function searchAction() { - if (!$this->acl->checkUserAccess(ActionsInterface::APITOKEN_SEARCH)) { + if (!$this->acl->checkUserAccess(ActionsInterface::AUTHTOKEN_SEARCH)) { return; } @@ -85,7 +85,7 @@ class ApiTokenController extends ControllerBase implements CrudControllerInterfa $itemsGridHelper = $this->dic->get(ItemsGridHelper::class); $itemSearchData = $this->getSearchData($this->configData->getAccountCount()); - return $itemsGridHelper->updatePager($itemsGridHelper->getApiTokensGrid($this->authTokenService->search($itemSearchData)), $itemSearchData); + return $itemsGridHelper->updatePager($itemsGridHelper->getAuthTokensGrid($this->authTokenService->search($itemSearchData)), $itemSearchData); } /** @@ -95,14 +95,14 @@ class ApiTokenController extends ControllerBase implements CrudControllerInterfa */ public function createAction() { - if (!$this->acl->checkUserAccess(ActionsInterface::APITOKEN_CREATE)) { + if (!$this->acl->checkUserAccess(ActionsInterface::AUTHTOKEN_CREATE)) { return; } $this->view->assign(__FUNCTION__, 1); $this->view->assign('header', __('Nueva Autorización')); $this->view->assign('isView', false); - $this->view->assign('route', 'apiToken/saveCreate'); + $this->view->assign('route', 'authToken/saveCreate'); try { $this->setViewData(); @@ -145,7 +145,7 @@ class ApiTokenController extends ControllerBase implements CrudControllerInterfa $this->view->assign('readonly'); } - $this->view->assign('customFields', $this->getCustomFieldsForItem(ActionsInterface::APITOKEN, $authTokenId)); + $this->view->assign('customFields', $this->getCustomFieldsForItem(ActionsInterface::AUTHTOKEN, $authTokenId)); } /** @@ -156,13 +156,13 @@ class ApiTokenController extends ControllerBase implements CrudControllerInterfa */ public function editAction($id) { - if (!$this->acl->checkUserAccess(ActionsInterface::APITOKEN_EDIT)) { + if (!$this->acl->checkUserAccess(ActionsInterface::AUTHTOKEN_EDIT)) { return; } $this->view->assign('header', __('Editar Autorización')); $this->view->assign('isView', false); - $this->view->assign('route', 'apiToken/saveEdit/' . $id); + $this->view->assign('route', 'authToken/saveEdit/' . $id); try { $this->setViewData($id); @@ -186,7 +186,7 @@ class ApiTokenController extends ControllerBase implements CrudControllerInterfa */ public function deleteAction($id = null) { - if (!$this->acl->checkUserAccess(ActionsInterface::APITOKEN_DELETE)) { + if (!$this->acl->checkUserAccess(ActionsInterface::AUTHTOKEN_DELETE)) { return; } @@ -194,7 +194,7 @@ class ApiTokenController extends ControllerBase implements CrudControllerInterfa if ($id === null) { $this->authTokenService->deleteByIdBatch($this->getItemsIdFromRequest()); - $this->deleteCustomFieldsForItem(ActionsInterface::APITOKEN, $id); + $this->deleteCustomFieldsForItem(ActionsInterface::AUTHTOKEN, $id); $this->eventDispatcher->notifyEvent('delete.authToken.selection', new Event($this, @@ -206,7 +206,7 @@ class ApiTokenController extends ControllerBase implements CrudControllerInterfa } else { $this->authTokenService->delete($id); - $this->deleteCustomFieldsForItem(ActionsInterface::APITOKEN, $id); + $this->deleteCustomFieldsForItem(ActionsInterface::AUTHTOKEN, $id); $this->eventDispatcher->notifyEvent('delete.authToken', new Event($this, @@ -229,19 +229,19 @@ class ApiTokenController extends ControllerBase implements CrudControllerInterfa */ public function saveCreateAction() { - if (!$this->acl->checkUserAccess(ActionsInterface::APITOKEN_CREATE)) { + if (!$this->acl->checkUserAccess(ActionsInterface::AUTHTOKEN_CREATE)) { return; } try { $form = new AuthTokenForm(); - $form->validate(ActionsInterface::APITOKEN_CREATE); + $form->validate(ActionsInterface::AUTHTOKEN_CREATE); $apiTokenData = $form->getItemData(); $id = $this->authTokenService->create($apiTokenData); - $this->addCustomFieldsForItem(ActionsInterface::APITOKEN, $id); + $this->addCustomFieldsForItem(ActionsInterface::AUTHTOKEN, $id); $this->eventDispatcher->notifyEvent('create.authToken', new Event($this)); @@ -264,13 +264,13 @@ class ApiTokenController extends ControllerBase implements CrudControllerInterfa */ public function saveEditAction($id) { - if (!$this->acl->checkUserAccess(ActionsInterface::APITOKEN_EDIT)) { + if (!$this->acl->checkUserAccess(ActionsInterface::AUTHTOKEN_EDIT)) { return; } try { $form = new AuthTokenForm($id); - $form->validate(ActionsInterface::APITOKEN_EDIT); + $form->validate(ActionsInterface::AUTHTOKEN_EDIT); if ($form->isRefresh()) { $this->authTokenService->refreshAndUpdate($form->getItemData()); @@ -292,7 +292,7 @@ class ApiTokenController extends ControllerBase implements CrudControllerInterfa ); } - $this->updateCustomFieldsForItem(ActionsInterface::APITOKEN, $id); + $this->updateCustomFieldsForItem(ActionsInterface::AUTHTOKEN, $id); $this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Autorización actualizada')); } catch (ValidationException $e) { @@ -312,7 +312,7 @@ class ApiTokenController extends ControllerBase implements CrudControllerInterfa */ public function viewAction($id) { - if (!$this->acl->checkUserAccess(ActionsInterface::APITOKEN_VIEW)) { + if (!$this->acl->checkUserAccess(ActionsInterface::AUTHTOKEN_VIEW)) { return; } diff --git a/app/modules/web/Controllers/BootstrapController.php b/app/modules/web/Controllers/BootstrapController.php index 7e02c558..fb54e916 100644 --- a/app/modules/web/Controllers/BootstrapController.php +++ b/app/modules/web/Controllers/BootstrapController.php @@ -25,7 +25,7 @@ namespace SP\Modules\Web\Controllers; use SP\Bootstrap; -use SP\Core\CryptPKI; +use SP\Core\Crypt\CryptPKI; use SP\Http\Cookies; use SP\Http\Response; use SP\Providers\Auth\Browser\Browser; diff --git a/app/modules/web/Controllers/ConfigEncryptionController.php b/app/modules/web/Controllers/ConfigEncryptionController.php index 8130945e..cff6be3d 100644 --- a/app/modules/web/Controllers/ConfigEncryptionController.php +++ b/app/modules/web/Controllers/ConfigEncryptionController.php @@ -33,7 +33,6 @@ use SP\Core\Crypt\Session as CryptSession; use SP\Core\Events\Event; use SP\Core\Events\EventMessage; use SP\Core\Messages\MailMessage; -use SP\Core\TaskFactory; use SP\Http\JsonResponse; use SP\Http\Request; use SP\Modules\Web\Controllers\Traits\JsonTrait; @@ -42,6 +41,7 @@ use SP\Services\Crypt\MasterPassService; use SP\Services\Crypt\TemporaryMasterPassService; use SP\Services\Crypt\UpdateMasterPassRequest; use SP\Services\MailService; +use SP\Services\Task\TaskFactory; use SP\Services\User\UserService; use SP\Util\Util; @@ -162,7 +162,7 @@ class ConfigEncryptionController extends SimpleControllerBase try { $configService = $this->dic->get(ConfigService::class); - $configService->save('masterPwd', Hash::hashKey(CryptSession::getSessionKey())); + $configService->save('masterPwd', Hash::hashKey(CryptSession::getSessionKey($this->session))); $this->eventDispatcher->notifyEvent('refresh.masterPassword', new Event($this, EventMessage::factory()->addDescription(__u('Hash de clave maestra actualizado')))); diff --git a/app/modules/web/Controllers/ConfigGeneralController.php b/app/modules/web/Controllers/ConfigGeneralController.php index 9b4ebbbf..da045292 100644 --- a/app/modules/web/Controllers/ConfigGeneralController.php +++ b/app/modules/web/Controllers/ConfigGeneralController.php @@ -2,8 +2,8 @@ /** * sysPass * - * @author nuxsmin - * @link https://syspass.org + * @author nuxsmin + * @link https://syspass.org * @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org * * This file is part of sysPass. @@ -24,6 +24,7 @@ namespace SP\Modules\Web\Controllers; +use SP\Config\ConfigUtil; use SP\Core\Acl\ActionsInterface; use SP\Core\Acl\UnauthorizedPageException; use SP\Core\Events\Event; @@ -78,6 +79,10 @@ class ConfigGeneralController extends SimpleControllerBase $syslogPort = Request::analyzeInt('remotesyslog_port', 0); $configData->setLogEnabled($logEnabled); + $configData->setLogEvents(Request::analyzeArray('log_events', function ($items) { + return ConfigUtil::eventsAdapter($items); + })); + $configData->setSyslogEnabled($syslogEnabled); if ($remoteSyslogEnabled) { diff --git a/app/modules/web/Controllers/ConfigMailController.php b/app/modules/web/Controllers/ConfigMailController.php index 3b4485fd..2efabc62 100644 --- a/app/modules/web/Controllers/ConfigMailController.php +++ b/app/modules/web/Controllers/ConfigMailController.php @@ -2,8 +2,8 @@ /** * sysPass * - * @author nuxsmin - * @link https://syspass.org + * @author nuxsmin + * @link https://syspass.org * @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org * * This file is part of sysPass. @@ -77,6 +77,9 @@ class ConfigMailController extends SimpleControllerBase $configData->setMailSecurity($mailSecurity); $configData->setMailFrom($mailFrom); $configData->setMailRecipients($mailRecipients); + $configData->setMailEvents(Request::analyzeArray('mail_events', function ($items) { + return ConfigUtil::eventsAdapter($items); + })); if ($mailAuth) { $configData->setMailAuthenabled($mailAuth); diff --git a/app/modules/web/Controllers/ConfigManagerController.php b/app/modules/web/Controllers/ConfigManagerController.php index 208c58c7..b9efb526 100644 --- a/app/modules/web/Controllers/ConfigManagerController.php +++ b/app/modules/web/Controllers/ConfigManagerController.php @@ -32,13 +32,16 @@ use SP\Core\CryptMasterPass; use SP\Core\Events\Event; use SP\Core\Language; use SP\Core\Plugin\PluginUtil; -use SP\Core\Task; use SP\Http\Request; use SP\Modules\Web\Controllers\Helpers\TabsHelper; use SP\Mvc\View\Components\DataTab; use SP\Mvc\View\Components\SelectItemAdapter; +use SP\Providers\Log\LogHandler; +use SP\Providers\Mail\MailHandler; use SP\Services\Account\AccountService; use SP\Services\Config\ConfigService; +use SP\Services\Crypt\TemporaryMasterPassService; +use SP\Services\Task\Task; use SP\Services\User\UserService; use SP\Services\UserGroup\UserGroupService; use SP\Services\UserProfile\UserProfileService; @@ -146,6 +149,10 @@ class ConfigManagerController extends ControllerBase $template->assign('userGroups', SelectItemAdapter::factory(UserGroupService::getItemsBasic())->getItemsFromModel()); $template->assign('userProfiles', SelectItemAdapter::factory(UserProfileService::getItemsBasic())->getItemsFromModel()); + $template->assign('logEvents', SelectItemAdapter::factory(LogHandler::EVENTS) + ->getItemsFromArraySelected($this->configData->getLogEvents(), true) + ); + return new DataTab(__('General'), $template); } @@ -205,6 +212,9 @@ class ConfigManagerController extends ControllerBase $template->assign('mailSecurity', ['SSL', 'TLS']); $template->assign('userGroups', SelectItemAdapter::factory(UserGroupService::getItemsBasic())->getItemsFromModel()); $template->assign('userProfiles', SelectItemAdapter::factory(UserProfileService::getItemsBasic())->getItemsFromModel()); + $template->assign('mailEvents', SelectItemAdapter::factory(MailHandler::EVENTS) + ->getItemsFromArraySelected($this->configData->getMailEvents(), true) + ); return new DataTab(__('Correo'), $template); } @@ -234,7 +244,7 @@ class ConfigManagerController extends ControllerBase $template->assign('tempMasterPassTime', $configService->getByParam('tempmaster_passtime', 0)); $template->assign('tempMasterMaxTime', $configService->getByParam('tempmaster_maxtime', 0)); - $tempMasterAttempts = sprintf('%d/%d', $configService->getByParam('tempmaster_attempts', 0), CryptMasterPass::MAX_ATTEMPTS); + $tempMasterAttempts = sprintf('%d/%d', $configService->getByParam('tempmaster_attempts', 0), TemporaryMasterPassService::MAX_ATTEMPTS); $template->assign('tempMasterAttempts', $tempMasterAttempts); $template->assign('tempMasterPass', $this->session->getTemporaryMasterPass()); diff --git a/app/modules/web/Controllers/ControllerBase.php b/app/modules/web/Controllers/ControllerBase.php index 1dd9ba77..49a87284 100644 --- a/app/modules/web/Controllers/ControllerBase.php +++ b/app/modules/web/Controllers/ControllerBase.php @@ -32,6 +32,7 @@ use Psr\Container\ContainerInterface; use SP\Config\Config; use SP\Config\ConfigData; use SP\Core\Acl\Acl; +use SP\Core\Context\ContextInterface; use SP\Core\Context\SessionContext; use SP\Core\Events\EventDispatcher; use SP\Core\Exceptions\FileNotFoundException; @@ -144,7 +145,7 @@ abstract class ControllerBase $this->config = $this->dic->get(Config::class); $this->configData = $this->config->getConfigData(); - $this->session = $this->dic->get(SessionContext::class); + $this->session = $this->dic->get(ContextInterface::class); $this->theme = $this->dic->get(Theme::class); $this->eventDispatcher = $this->dic->get(EventDispatcher::class); $this->acl = $this->dic->get(Acl::class); diff --git a/app/modules/web/Controllers/ErrorController.php b/app/modules/web/Controllers/ErrorController.php index 5cd820f2..431d1f45 100644 --- a/app/modules/web/Controllers/ErrorController.php +++ b/app/modules/web/Controllers/ErrorController.php @@ -26,7 +26,6 @@ namespace SP\Modules\Web\Controllers; use Klein\Klein; use SP\Bootstrap; -use SP\Core\Traits\InjectableTrait; use SP\Mvc\View\Template; use SP\Util\Util; @@ -37,7 +36,7 @@ use SP\Util\Util; */ class ErrorController { - use InjectableTrait; + use SP\Core\Dic\InjectableTrait; /** * @var Template diff --git a/app/modules/web/Controllers/Helpers/Account/AccountActionsHelper.php b/app/modules/web/Controllers/Helpers/Account/AccountActionsHelper.php index bc51933d..bd394199 100644 --- a/app/modules/web/Controllers/Helpers/Account/AccountActionsHelper.php +++ b/app/modules/web/Controllers/Helpers/Account/AccountActionsHelper.php @@ -421,7 +421,7 @@ class AccountActionsHelper extends HelperBase */ protected function initialize() { - $this->sk = $this->session->generateSecurityKey(); + $this->sk = $this->context->generateSecurityKey(); $this->icons = $this->view->getTheme()->getIcons(); } } \ No newline at end of file diff --git a/app/modules/web/Controllers/Helpers/Account/AccountHelper.php b/app/modules/web/Controllers/Helpers/Account/AccountHelper.php index 93927354..e338ff70 100644 --- a/app/modules/web/Controllers/Helpers/Account/AccountHelper.php +++ b/app/modules/web/Controllers/Helpers/Account/AccountHelper.php @@ -146,8 +146,8 @@ class AccountHelper extends HelperBase $this->view->assign('publicLinkShow', false); } - $userData = $this->session->getUserData(); - $userProfileData = $this->session->getUserProfile(); + $userData = $this->context->getUserData(); + $userProfileData = $this->context->getUserProfile(); $this->view->assign('allowPrivate', $userProfileData->isAccPrivate() && $accountData->getUserId() === $userData->getId()); $this->view->assign('allowPrivateGroup', $userProfileData->isAccPrivateGroup() && $accountData->getUserGroupId() === $userData->getUserGroupId()); @@ -176,7 +176,7 @@ class AccountHelper extends HelperBase throw new UnauthorizedPageException(UnauthorizedPageException::INFO); } - if (!$this->dic->get(MasterPassService::class)->checkUserUpdateMPass($this->session->getUserData()->getLastUpdateMPass())) { + if (!$this->dic->get(MasterPassService::class)->checkUserUpdateMPass($this->context->getUserData()->getLastUpdateMPass())) { throw new UpdatedMasterPassException(UpdatedMasterPassException::INFO); } } @@ -277,7 +277,7 @@ class AccountHelper extends HelperBase $this->view->assign('userGroups', $selectUserGroups->getItemsFromModel()); $this->view->assign('tags', $selectTags->getItemsFromModel()); - $userProfileData = $this->session->getUserProfile(); + $userProfileData = $this->context->getUserProfile(); $this->view->assign('allowPrivate', $userProfileData->isAccPrivate()); $this->view->assign('allowPrivateGroup', $userProfileData->isAccPrivateGroup()); @@ -342,6 +342,6 @@ class AccountHelper extends HelperBase $this->view->assign('changesHash'); $this->view->assign('chkUserEdit'); $this->view->assign('chkGroupEdit'); - $this->view->assign('sk', $this->session->generateSecurityKey()); + $this->view->assign('sk', $this->context->generateSecurityKey()); } } \ No newline at end of file diff --git a/app/modules/web/Controllers/Helpers/Account/AccountHistoryHelper.php b/app/modules/web/Controllers/Helpers/Account/AccountHistoryHelper.php index c34dd5c5..c60f9079 100644 --- a/app/modules/web/Controllers/Helpers/Account/AccountHistoryHelper.php +++ b/app/modules/web/Controllers/Helpers/Account/AccountHistoryHelper.php @@ -121,7 +121,7 @@ class AccountHistoryHelper extends HelperBase throw new UnauthorizedPageException(UnauthorizedPageException::INFO); } - if (!$this->dic->get(MasterPassService::class)->checkUserUpdateMPass($this->session->getUserData()->getLastUpdateMPass())) { + if (!$this->dic->get(MasterPassService::class)->checkUserUpdateMPass($this->context->getUserData()->getLastUpdateMPass())) { throw new UpdatedMasterPassException(UpdatedMasterPassException::INFO); } } @@ -160,6 +160,6 @@ class AccountHistoryHelper extends HelperBase $this->acl = $this->dic->get(Acl::class); $this->accountHistoryService = $this->dic->get(AccountHistoryService::class);; - $this->view->assign('sk', $this->session->generateSecurityKey()); + $this->view->assign('sk', $this->context->generateSecurityKey()); } } \ No newline at end of file diff --git a/app/modules/web/Controllers/Helpers/Account/AccountPasswordHelper.php b/app/modules/web/Controllers/Helpers/Account/AccountPasswordHelper.php index d7a352ea..0e1300af 100644 --- a/app/modules/web/Controllers/Helpers/Account/AccountPasswordHelper.php +++ b/app/modules/web/Controllers/Helpers/Account/AccountPasswordHelper.php @@ -89,11 +89,11 @@ class AccountPasswordHelper extends HelperBase throw new HelperException(__u('No tiene permisos para acceder a esta cuenta')); } - if (!$this->dic->get(MasterPassService::class)->checkUserUpdateMPass($this->session->getUserData()->getLastUpdateMPass())) { + if (!$this->dic->get(MasterPassService::class)->checkUserUpdateMPass($this->context->getUserData()->getLastUpdateMPass())) { throw new HelperException(__('Clave maestra actualizada') . '
' . __('Reinicie la sesión para cambiarla')); } - $key = CryptSession::getSessionKey(); + $key = CryptSession::getSessionKey($this->context); $securedKey = Crypt::unlockSecuredKey($accountData->getKey(), $key); return trim(Crypt::decrypt($accountData->getPass(), $securedKey, $key)); @@ -123,6 +123,6 @@ class AccountPasswordHelper extends HelperBase } $this->view->assign('isLinked', $accountData->getParentId() > 0); - $this->view->assign('sk', $this->session->generateSecurityKey()); + $this->view->assign('sk', $this->context->generateSecurityKey()); } } \ No newline at end of file diff --git a/app/modules/web/Controllers/Helpers/Account/AccountSearchHelper.php b/app/modules/web/Controllers/Helpers/Account/AccountSearchHelper.php index af62d8c6..3b305819 100644 --- a/app/modules/web/Controllers/Helpers/Account/AccountSearchHelper.php +++ b/app/modules/web/Controllers/Helpers/Account/AccountSearchHelper.php @@ -114,7 +114,7 @@ class AccountSearchHelper extends HelperBase || $this->accountSearchFilter->isSearchFavorites() || $this->accountSearchFilter->isSortViews()); - $userPreferences = $this->session->getUserData()->getPreferences(); + $userPreferences = $this->context->getUserData()->getPreferences(); AccountSearchItem::$accountLink = $userPreferences->isAccountLink(); AccountSearchItem::$topNavbar = $userPreferences->isTopNavbar(); @@ -141,7 +141,7 @@ class AccountSearchHelper extends HelperBase // Establecer el filtro de búsqueda en la sesión como un objeto - $this->session->setSearchFilters($this->accountSearchFilter); + $this->context->setSearchFilters($this->accountSearchFilter); $this->view->assign('data', $Grid); } @@ -176,7 +176,7 @@ class AccountSearchHelper extends HelperBase $GridPager->setFilterOn($this->filterOn); $GridPager->setSourceAction(new DataGridActionSearch(ActionsInterface::ACCOUNT_SEARCH)); - $userPreferences = $this->session->getUserData()->getPreferences(); + $userPreferences = $this->context->getUserData()->getPreferences(); $showOptionalActions = $userPreferences->isOptionalActions() || $userPreferences->isResultsAsCards() || ($userPreferences->getUserId() === 0 && $this->configData->isResultsAsCards()); $actions = $this->dic->get(AccountActionsHelper::class); @@ -262,7 +262,7 @@ class AccountSearchHelper extends HelperBase protected function initialize() { $this->queryTimeStart = microtime(); - $this->sk = $this->session->generateSecurityKey(); + $this->sk = $this->context->generateSecurityKey(); $this->view->assign('sk', $this->sk); $this->setVars(); } @@ -272,10 +272,10 @@ class AccountSearchHelper extends HelperBase */ private function setVars() { - $userData = $this->session->getUserData(); + $userData = $this->context->getUserData(); $this->view->assign('isAdmin', $userData->getIsAdminApp() || $userData->getIsAdminAcc()); - $this->view->assign('showGlobalSearch', $this->configData->isGlobalSearch() && $this->session->getUserProfile()->isAccGlobalSearch()); + $this->view->assign('showGlobalSearch', $this->configData->isGlobalSearch() && $this->context->getUserProfile()->isAccGlobalSearch()); // Obtener el filtro de búsqueda desde la sesión $this->accountSearchFilter = $this->getFilters(); @@ -299,14 +299,14 @@ class AccountSearchHelper extends HelperBase */ private function getFilters() { - $accountSearchFilter = $this->session->getSearchFilters(); + $accountSearchFilter = $this->context->getSearchFilters(); if ($accountSearchFilter !== null && empty(Request::analyzeString('sk'))) { // Obtener el filtro de búsqueda desde la sesión return $accountSearchFilter; } - $userPreferences = $this->session->getUserData()->getPreferences(); + $userPreferences = $this->context->getUserData()->getPreferences(); $limitCount = ($userPreferences->getResultsPerPage() > 0) ? $userPreferences->getResultsPerPage() : $this->configData->getAccountCount(); $accountSearchFilter = new AccountSearchFilter(); diff --git a/app/modules/web/Controllers/Helpers/HelperBase.php b/app/modules/web/Controllers/Helpers/HelperBase.php index 7b811cae..a717f181 100644 --- a/app/modules/web/Controllers/Helpers/HelperBase.php +++ b/app/modules/web/Controllers/Helpers/HelperBase.php @@ -28,6 +28,7 @@ use DI\Container; use Psr\Container\ContainerInterface; use SP\Config\Config; use SP\Config\ConfigData; +use SP\Core\Context\ContextInterface; use SP\Core\Context\SessionContext; use SP\Core\Events\EventDispatcher; use SP\Mvc\View\Template; @@ -50,7 +51,7 @@ abstract class HelperBase /** * @var SessionContext */ - protected $session; + protected $context; /** * @var EventDispatcher */ @@ -69,17 +70,17 @@ abstract class HelperBase * * @param \SP\Mvc\View\Template $template * @param Config $config - * @param SessionContext $session + * @param ContextInterface $context * @param EventDispatcher $eventDispatcher * @param Container $container */ - final public function __construct(Template $template, Config $config, SessionContext $session, EventDispatcher $eventDispatcher, Container $container) + final public function __construct(Template $template, Config $config, ContextInterface $context, EventDispatcher $eventDispatcher, Container $container) { $this->dic = $container; $this->view = $template; $this->config = $config; $this->configData = $config->getConfigData(); - $this->session = $session; + $this->context = $context; $this->eventDispatcher = $eventDispatcher; if (method_exists($this, 'initialize')) { diff --git a/app/modules/web/Controllers/Helpers/ItemsGridHelper.php b/app/modules/web/Controllers/Helpers/ItemsGridHelper.php index 295864e4..760bbd36 100644 --- a/app/modules/web/Controllers/Helpers/ItemsGridHelper.php +++ b/app/modules/web/Controllers/Helpers/ItemsGridHelper.php @@ -851,7 +851,7 @@ class ItemsGridHelper extends HelperBase * @param array $data * @return DataGridTab */ - public function getApiTokensGrid(array $data) + public function getAuthTokensGrid(array $data) { // Grid Header $GridHeaders = new DataGridHeader(); @@ -877,59 +877,59 @@ class ItemsGridHelper extends HelperBase // Grid Actions $GridActionSearch = new DataGridActionSearch(); - $GridActionSearch->setId(ActionsInterface::APITOKEN_SEARCH); + $GridActionSearch->setId(ActionsInterface::AUTHTOKEN_SEARCH); $GridActionSearch->setType(DataGridActionType::SEARCH_ITEM); $GridActionSearch->setName('frmSearchToken'); $GridActionSearch->setTitle(__('Buscar Token')); $GridActionSearch->setOnSubmitFunction('appMgmt/search'); - $GridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::APITOKEN_SEARCH)); + $GridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::AUTHTOKEN_SEARCH)); $Grid->setDataActions($GridActionSearch); $Grid->setPager($this->getPager($GridActionSearch)); // Grid item's actions $GridActionNew = new DataGridAction(); - $GridActionNew->setId(ActionsInterface::APITOKEN_CREATE); + $GridActionNew->setId(ActionsInterface::AUTHTOKEN_CREATE); $GridActionNew->setType(DataGridActionType::MENUBAR_ITEM); $GridActionNew->setName(__('Nueva Autorización')); $GridActionNew->setTitle(__('Nueva Autorización')); $GridActionNew->setIcon($this->icons->getIconAdd()); $GridActionNew->setSkip(true); $GridActionNew->setOnClickFunction('appMgmt/show'); - $GridActionNew->addData('action-route', Acl::getActionRoute(ActionsInterface::APITOKEN_CREATE)); + $GridActionNew->addData('action-route', Acl::getActionRoute(ActionsInterface::AUTHTOKEN_CREATE)); $Grid->setDataActions($GridActionNew); $GridActionView = new DataGridAction(); - $GridActionView->setId(ActionsInterface::APITOKEN_VIEW); + $GridActionView->setId(ActionsInterface::AUTHTOKEN_VIEW); $GridActionView->setType(DataGridActionType::VIEW_ITEM); $GridActionView->setName(__('Ver token de Autorización')); $GridActionView->setTitle(__('Ver token de Autorización')); $GridActionView->setIcon($this->icons->getIconView()); $GridActionView->setOnClickFunction('appMgmt/show'); - $GridActionView->addData('action-route', Acl::getActionRoute(ActionsInterface::APITOKEN_VIEW)); + $GridActionView->addData('action-route', Acl::getActionRoute(ActionsInterface::AUTHTOKEN_VIEW)); $Grid->setDataActions($GridActionView); $GridActionEdit = new DataGridAction(); - $GridActionEdit->setId(ActionsInterface::APITOKEN_EDIT); + $GridActionEdit->setId(ActionsInterface::AUTHTOKEN_EDIT); $GridActionEdit->setType(DataGridActionType::EDIT_ITEM); $GridActionEdit->setName(__('Editar Autorización')); $GridActionEdit->setTitle(__('Editar Autorización')); $GridActionEdit->setIcon($this->icons->getIconEdit()); $GridActionEdit->setOnClickFunction('appMgmt/show'); - $GridActionEdit->addData('action-route', Acl::getActionRoute(ActionsInterface::APITOKEN_EDIT)); + $GridActionEdit->addData('action-route', Acl::getActionRoute(ActionsInterface::AUTHTOKEN_EDIT)); $Grid->setDataActions($GridActionEdit); $GridActionDel = new DataGridAction(); - $GridActionDel->setId(ActionsInterface::APITOKEN_DELETE); + $GridActionDel->setId(ActionsInterface::AUTHTOKEN_DELETE); $GridActionDel->setType(DataGridActionType::DELETE_ITEM); $GridActionDel->setName(__('Eliminar Autorización')); $GridActionDel->setTitle(__('Eliminar Autorización')); $GridActionDel->setIcon($this->icons->getIconDelete()); $GridActionDel->setOnClickFunction('appMgmt/delete'); - $GridActionDel->addData('action-route', Acl::getActionRoute(ActionsInterface::APITOKEN_DELETE)); + $GridActionDel->addData('action-route', Acl::getActionRoute(ActionsInterface::AUTHTOKEN_DELETE)); $Grid->setDataActions($GridActionDel); $Grid->setDataActions($GridActionDel, true); @@ -1255,9 +1255,9 @@ class ItemsGridHelper extends HelperBase $text); } - if (strlen($text) >= 150) { - $text = wordwrap($text, 150, PHP_EOL, true); - } +// if (strlen($text) >= 100) { +// $text = wordwrap($text, 100, PHP_EOL, true); +// } return str_replace(PHP_EOL, '
', $text); }); @@ -1322,7 +1322,7 @@ class ItemsGridHelper extends HelperBase */ public function getNotificationsGrid(array $data) { - $isAdminApp = $this->session->getUserData()->getIsAdminApp(); + $isAdminApp = $this->context->getUserData()->getIsAdminApp(); // Grid Header $GridHeaders = new DataGridHeader(); diff --git a/app/modules/web/Controllers/Helpers/LayoutHelper.php b/app/modules/web/Controllers/Helpers/LayoutHelper.php index e20da22c..d57b7b36 100644 --- a/app/modules/web/Controllers/Helpers/LayoutHelper.php +++ b/app/modules/web/Controllers/Helpers/LayoutHelper.php @@ -27,11 +27,11 @@ namespace SP\Modules\Web\Controllers\Helpers; use SP\Bootstrap; use SP\Core\Acl\Acl; use SP\Core\Acl\ActionsInterface; +use SP\Core\Crypt\CryptPKI; use SP\Core\Dic\ContainerException; use SP\Core\Exceptions\SPException; use SP\Core\Language; use SP\Core\Plugin\PluginUtil; -use SP\Core\SessionUtil; use SP\Core\UI\Theme; use SP\Core\UI\ThemeInterface; use SP\Html\DataGrid\DataGridAction; @@ -93,15 +93,13 @@ class LayoutHelper extends HelperBase /** * Inicializar las variables para la vista principal de la aplicación - * - * @throws ContainerException */ public function initBody() { $this->view->assign('startTime', microtime()); $this->view->assign('isInstalled', $this->configData->isInstalled()); - $this->view->assign('sk', $this->loggedIn ? $this->session->generateSecurityKey() : ''); + $this->view->assign('sk', $this->loggedIn ? $this->context->generateSecurityKey() : ''); $this->view->assign('appInfo', Util::getAppInfo()); $this->view->assign('appVersion', Util::getVersionString()); $this->view->assign('isDemoMode', $this->configData->isDemoEnabled()); @@ -112,16 +110,16 @@ class LayoutHelper extends HelperBase $this->view->assign('logonobg', Bootstrap::$WEBURI . '/public/images/logo_full_nobg.png'); $this->view->assign('httpsEnabled', Checks::httpsEnabled()); - $this->loggedIn = $this->session->isLoggedIn(); + $this->loggedIn = $this->context->isLoggedIn(); $this->view->assign('loggedIn', $this->loggedIn); $this->view->assign('lang', $this->loggedIn ? Language::$userLang : Language::$globalLang); - $this->view->assign('loadApp', $this->session->getAuthCompleted()); + $this->view->assign('loadApp', $this->context->getAuthCompleted()); try { // Cargar la clave pública en la sesión - SessionUtil::loadPublicKey(); + $this->context->setPublicKey($this->dic->get(CryptPKI::class)->getPublicKey()); } catch (SPException $e) { processException($e); } @@ -151,7 +149,7 @@ class LayoutHelper extends HelperBase $this->view->append('jsLinks', $jsUri . '&f=' . $themeJsFiles . '&b=' . $themeJsBase . '&v=' . $jsVersionHash); } - $userPreferences = $this->session->getUserData()->getPreferences(); + $userPreferences = $this->context->getUserData()->getPreferences(); if ($this->loggedIn && $userPreferences->getUserId() > 0) { $resultsAsCards = $userPreferences->isResultsAsCards(); @@ -212,7 +210,7 @@ class LayoutHelper extends HelperBase { $userType = null; - $userData = $this->session->getUserData(); + $userData = $this->context->getUserData(); $icons = $this->theme->getIcons(); if ($userData->getIsAdminApp()) { @@ -371,7 +369,7 @@ class LayoutHelper extends HelperBase { $this->theme = $this->dic->get(Theme::class); - $this->loggedIn = $this->session->isLoggedIn(); + $this->loggedIn = $this->context->isLoggedIn(); $this->view->assign('loggedIn', $this->loggedIn); } diff --git a/app/modules/web/Controllers/MainController.php b/app/modules/web/Controllers/MainController.php index e725c02a..8ec6ec6f 100644 --- a/app/modules/web/Controllers/MainController.php +++ b/app/modules/web/Controllers/MainController.php @@ -29,9 +29,9 @@ defined('APP_ROOT') || die(); use SP\Account\AccountUtil; use SP\Core\DiFactory; use SP\Core\Exceptions\SPException; -use SP\Core\Task; use SP\Core\Upgrade\Check; use SP\Http\Request; +use SP\Services\Task\Task; use SP\Util\Util; /** diff --git a/app/modules/web/Controllers/SimpleControllerBase.php b/app/modules/web/Controllers/SimpleControllerBase.php index 2b7180e1..6de24828 100644 --- a/app/modules/web/Controllers/SimpleControllerBase.php +++ b/app/modules/web/Controllers/SimpleControllerBase.php @@ -31,6 +31,7 @@ use SP\Config\Config; use SP\Config\ConfigData; use SP\Core\Acl\Acl; use SP\Core\Acl\UnauthorizedPageException; +use SP\Core\Context\ContextInterface; use SP\Core\Context\SessionContext; use SP\Core\Events\EventDispatcher; use SP\Core\UI\Theme; @@ -103,7 +104,7 @@ abstract class SimpleControllerBase $this->config = $this->dic->get(Config::class); $this->configData = $this->config->getConfigData(); - $this->session = $this->dic->get(SessionContext::class); + $this->session = $this->dic->get(ContextInterface::class); $this->theme = $this->dic->get(Theme::class); $this->eventDispatcher = $this->dic->get(EventDispatcher::class); $this->router = $this->dic->get(Klein::class); diff --git a/app/modules/web/Controllers/TaskController.php b/app/modules/web/Controllers/TaskController.php index 5cbbe1f8..e1f514ce 100644 --- a/app/modules/web/Controllers/TaskController.php +++ b/app/modules/web/Controllers/TaskController.php @@ -27,9 +27,9 @@ namespace SP\Modules\Web\Controllers; use DI\Container; use Klein\Klein; use SP\Core\Context\SessionContext; -use SP\Core\Task; -use SP\Core\TaskFactory; use SP\Services\ServiceException; +use SP\Services\Task\Task; +use SP\Services\Task\TaskFactory; use SP\Services\Task\TaskService; /** diff --git a/app/modules/web/Controllers/Traits/ItemTrait.php b/app/modules/web/Controllers/Traits/ItemTrait.php index 5b924e5b..84222e5d 100644 --- a/app/modules/web/Controllers/Traits/ItemTrait.php +++ b/app/modules/web/Controllers/Traits/ItemTrait.php @@ -77,7 +77,7 @@ trait ItemTrait $customField->typeName = $item->typeName; $customField->moduleId = (int)$item->moduleId; $customField->formId = CustomFieldService::getFormIdForName($item->definitionName); - $customField->value = $item->data !== null ? CustomFieldService::decryptData($item->data) : ''; + $customField->value = $item->data !== null ? CustomFieldService::decryptData($item->data, $this->session) : ''; $customFields[] = $customField; } catch (CryptoException $e) { diff --git a/app/modules/web/Controllers/UserPassResetController.php b/app/modules/web/Controllers/UserPassResetController.php index 30dbe3e8..68c35cec 100644 --- a/app/modules/web/Controllers/UserPassResetController.php +++ b/app/modules/web/Controllers/UserPassResetController.php @@ -85,17 +85,17 @@ class UserPassResetController extends ControllerBase $login = Request::analyzeString('login'); $email = Request::analyzeEmail('email'); - $userLoginResponse = $this->dic->get(UserService::class)->getByLogin($login); + $userData = $this->dic->get(UserService::class)->getByLogin($login); - if ($userLoginResponse->getEmail() !== $email) { + if ($userData->getEmail() !== $email) { throw new SPException(__u('Datos incorrectos'), SPException::WARNING); } - if ($userLoginResponse->getIsDisabled() || $userLoginResponse->getIsLdap()) { + if ($userData->isDisabled() || $userData->isLdap()) { throw new SPException(__u('No es posible recuperar la clave'), SPException::WARNING, __u('Consulte con el administrador')); } - $hash = $this->dic->get(UserPassRecoverService::class)->requestForUserId($userLoginResponse->getId()); + $hash = $this->dic->get(UserPassRecoverService::class)->requestForUserId($userData->getId()); $this->eventDispatcher->notifyEvent('request.user.passReset', new Event($this, EventMessage::factory() diff --git a/app/modules/web/Forms/AccountForm.php b/app/modules/web/Forms/AccountForm.php index a55964db..349623e8 100644 --- a/app/modules/web/Forms/AccountForm.php +++ b/app/modules/web/Forms/AccountForm.php @@ -85,7 +85,7 @@ class AccountForm extends FormBase implements FormInterface $this->accountRequest->login = Request::analyzeString('login'); $this->accountRequest->url = Request::analyzeString('url'); $this->accountRequest->notes = Request::analyzeString('notes'); - $this->accountRequest->userEditId = $this->session->getUserData()->getId(); + $this->accountRequest->userEditId = $this->context->getUserData()->getId(); $this->accountRequest->otherUserEdit = (int)Request::analyzeBool('otherUserEditEnabled', false); $this->accountRequest->otherUserGroupEdit = (int)Request::analyzeBool('otherUserGroupEditEnabled', false); $this->accountRequest->pass = Request::analyzeEncrypted('pass'); diff --git a/app/modules/web/Forms/AuthTokenForm.php b/app/modules/web/Forms/AuthTokenForm.php index 6b869fbe..e6679e6c 100644 --- a/app/modules/web/Forms/AuthTokenForm.php +++ b/app/modules/web/Forms/AuthTokenForm.php @@ -55,8 +55,8 @@ class AuthTokenForm extends FormBase implements FormInterface public function validate($action) { switch ($action) { - case ActionsInterface::APITOKEN_CREATE: - case ActionsInterface::APITOKEN_EDIT: + case ActionsInterface::AUTHTOKEN_CREATE: + case ActionsInterface::AUTHTOKEN_EDIT: $this->analyzeRequestData(); $this->checkCommon(); break; diff --git a/app/modules/web/Forms/FormBase.php b/app/modules/web/Forms/FormBase.php index ad12c32c..ebd4e1e2 100644 --- a/app/modules/web/Forms/FormBase.php +++ b/app/modules/web/Forms/FormBase.php @@ -26,8 +26,9 @@ namespace SP\Modules\Web\Forms; use SP\Config\Config; use SP\Config\ConfigData; +use SP\Core\Context\ContextInterface; use SP\Core\Context\SessionContext; -use SP\Core\Traits\InjectableTrait; +use SP\Core\Dic\InjectableTrait; /** * Class FormBase @@ -53,7 +54,7 @@ abstract class FormBase /** * @var SessionContext */ - protected $session; + protected $context; /** * FormBase constructor. @@ -69,14 +70,14 @@ abstract class FormBase } /** - * @param Config $config - * @param SessionContext $session + * @param Config $config + * @param ContextInterface $session */ - public function inject(Config $config, SessionContext $session) + public function inject(Config $config, ContextInterface $session) { $this->config = $config; $this->configData = $config->getConfigData(); - $this->session = $session; + $this->context = $session; } /** diff --git a/app/modules/web/Forms/NotificationForm.php b/app/modules/web/Forms/NotificationForm.php index 76415f7b..cbb8fe58 100644 --- a/app/modules/web/Forms/NotificationForm.php +++ b/app/modules/web/Forms/NotificationForm.php @@ -77,7 +77,7 @@ class NotificationForm extends FormBase implements FormInterface $this->notificationData->setUserId(Request::analyzeInt('notification_user')); $this->notificationData->setChecked(Request::analyzeBool('notification_checkout', false)); - if ($this->session->getUserData()->getIsAdminApp() && $this->notificationData->getUserId() === 0) { + if ($this->context->getUserData()->getIsAdminApp() && $this->notificationData->getUserId() === 0) { $this->notificationData->setOnlyAdmin(Request::analyzeBool('notification_onlyadmin', false)); $this->notificationData->setSticky(Request::analyzeBool('notification_sticky', false)); } diff --git a/app/modules/web/Forms/UserForm.php b/app/modules/web/Forms/UserForm.php index aae75547..520bc078 100644 --- a/app/modules/web/Forms/UserForm.php +++ b/app/modules/web/Forms/UserForm.php @@ -161,7 +161,7 @@ class UserForm extends FormBase implements FormInterface throw new ValidationException(__u('Ey, esto es una DEMO!!')); } - $userData = $this->session->getUserData(); + $userData = $this->context->getUserData(); if ((is_array($this->itemId) && in_array($userData->getId(), $this->itemId)) || $this->itemId === $userData->getId() diff --git a/app/modules/web/Init.php b/app/modules/web/Init.php index 5fb0383f..8dce8767 100644 --- a/app/modules/web/Init.php +++ b/app/modules/web/Init.php @@ -27,6 +27,8 @@ namespace SP\Modules\Web; use Defuse\Crypto\Exception\CryptoException; use DI\Container; use SP\Bootstrap; +use SP\Core\Context\ContextException; +use SP\Core\Context\ContextInterface; use SP\Core\Context\SessionContext; use SP\Core\Crypt\CryptSessionHandler; use SP\Core\Crypt\SecureKeyCookie; @@ -36,7 +38,6 @@ use SP\Core\Language; use SP\Core\ModuleBase; use SP\Core\Plugin\PluginUtil; use SP\Core\UI\Theme; -use SP\Core\Upgrade\Upgrade; use SP\Http\Request; use SP\Services\UserProfile\UserProfileService; use SP\Storage\Database; @@ -45,6 +46,7 @@ use SP\Util\HttpUtil; /** * Class Init + * * @package SP\Modules\Web */ class Init extends ModuleBase @@ -63,13 +65,10 @@ class Init extends ModuleBase * @var Language */ protected $language; - /** - * @var Upgrade - */ - protected $upgrade; /** * Init constructor. + * * @param Container $container * @throws \DI\DependencyException * @throws \DI\NotFoundException @@ -78,10 +77,9 @@ class Init extends ModuleBase { parent::__construct($container); - $this->context = $container->get(SessionContext::class); + $this->context = $container->get(ContextInterface::class); $this->theme = $container->get(Theme::class); $this->language = $container->get(Language::class); - $this->upgrade = $container->get(Upgrade::class); } /** @@ -95,11 +93,13 @@ class Init extends ModuleBase */ public function initialize($controller) { - debugLog(__FUNCTION__); + debugLog(__METHOD__); // Iniciar la sesión de PHP $this->initSession($this->configData->isEncryptSession()); + $this->theme->initialize(); + // Volver a cargar la configuración si se recarga la página if (Request::checkReload($this->router) === false) { // Cargar la configuración @@ -107,6 +107,9 @@ class Init extends ModuleBase // Cargar el lenguaje $this->language->setLanguage(); + + // Initialize theme + $this->theme->initialize(); } else { debugLog('Browser reload'); @@ -115,9 +118,11 @@ class Init extends ModuleBase // Cargar la configuración $this->config->loadConfig($this->context, true); - // Restablecer el idioma y el tema visual + // Restablecer el idioma $this->language->setLanguage(true); - $this->theme->initTheme(true); + + // Re-Initialize theme + $this->theme->initialize(true); } // Comprobar si es necesario cambiar a HTTPS @@ -175,7 +180,7 @@ class Init extends ModuleBase * Iniciar la sesión PHP * * @param bool $encrypt Encriptar la sesión de PHP - * @throws InitializationException + * @throws ContextException */ private function initSession($encrypt = false) { @@ -185,9 +190,10 @@ class Init extends ModuleBase session_set_save_handler(new CryptSessionHandler($key), true); } + try { $this->context->initialize(); - } catch (InitializationException $e) { + } catch (ContextException $e) { $this->router->response()->header('HTTP/1.1', '500 Internal Server Error'); throw $e; @@ -271,14 +277,12 @@ class Init extends ModuleBase /** * Comprobar si es necesario actualizar componentes - * - * @throws \Defuse\Crypto\Exception\EnvironmentIsBrokenException */ private function checkUpgrade() { - if (Bootstrap::$SUBURI === '/index.php') { - $this->upgrade->checkDbVersion(); - $this->upgrade->checkAppVersion(); - } +// if (Bootstrap::$SUBURI === '/index.php') { +// $this->upgrade->checkDbVersion(); +// $this->upgrade->checkAppVersion(); +// } } } \ No newline at end of file diff --git a/app/modules/web/themes/material-blue/views/account/account-editpass.inc b/app/modules/web/themes/material-blue/views/account/account-editpass.inc index 158722a5..67cb2b07 100644 --- a/app/modules/web/themes/material-blue/views/account/account-editpass.inc +++ b/app/modules/web/themes/material-blue/views/account/account-editpass.inc @@ -1,6 +1,6 @@ diff --git a/app/modules/web/themes/material-blue/views/account/account-request.inc b/app/modules/web/themes/material-blue/views/account/account-request.inc index 28627372..19a525a5 100644 --- a/app/modules/web/themes/material-blue/views/account/account-request.inc +++ b/app/modules/web/themes/material-blue/views/account/account-request.inc @@ -1,6 +1,6 @@ diff --git a/app/modules/web/themes/material-blue/views/account/actions.inc b/app/modules/web/themes/material-blue/views/account/actions.inc index ca0ff377..61babfd0 100644 --- a/app/modules/web/themes/material-blue/views/account/actions.inc +++ b/app/modules/web/themes/material-blue/views/account/actions.inc @@ -1,5 +1,5 @@