diff --git a/app/modules/api/Controllers/ControllerBase.php b/app/modules/api/Controllers/ControllerBase.php index a160c745..df454b73 100644 --- a/app/modules/api/Controllers/ControllerBase.php +++ b/app/modules/api/Controllers/ControllerBase.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. * @@ -134,17 +134,13 @@ abstract class ControllerBase */ private function sendJsonResponse(string $response): void { - Json::factory($this->router->response()) - ->returnRawJson($response); + Json::factory($this->router->response())->returnRawJson($response); } final protected function returnResponseException(Exception $e): void { $this->sendJsonResponse( - JsonRpcResponse::getResponseException( - $e, - $this->apiService->getRequestId() - ) + JsonRpcResponse::getResponseException($e, $this->apiService->getRequestId()) ); } } \ No newline at end of file diff --git a/app/modules/web/Controllers/ControllerBase.php b/app/modules/web/Controllers/ControllerBase.php index 3b6fa2ec..c2ab374e 100644 --- a/app/modules/web/Controllers/ControllerBase.php +++ b/app/modules/web/Controllers/ControllerBase.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. * @@ -27,7 +27,6 @@ namespace SP\Modules\Web\Controllers; defined('APP_ROOT') || die(); use Exception; -use Klein\Klein; use SP\Core\Acl\Acl; use SP\Core\Application; use SP\Core\Context\ContextInterface; @@ -63,7 +62,6 @@ abstract class ControllerBase protected ConfigFileService $config; protected ContextInterface $session; protected ThemeInterface $theme; - protected Klein $router; protected Acl $acl; protected ConfigDataInterface $configData; protected RequestInterface $request; diff --git a/app/modules/web/Controllers/Items/AccountUserController.php b/app/modules/web/Controllers/Items/AccountUserController.php index 68e1f6cf..1f040a32 100644 --- a/app/modules/web/Controllers/Items/AccountUserController.php +++ b/app/modules/web/Controllers/Items/AccountUserController.php @@ -56,9 +56,9 @@ final class AccountUserController extends SimpleControllerBase * * @param int|null $accountId * - * @throws \JsonException * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException + * @throws \SP\Core\Exceptions\SPException */ public function accountsUserAction(?int $accountId = null): void { diff --git a/app/modules/web/Controllers/Items/NotificationsController.php b/app/modules/web/Controllers/Items/NotificationsController.php index 7cd0d4d0..625af33c 100644 --- a/app/modules/web/Controllers/Items/NotificationsController.php +++ b/app/modules/web/Controllers/Items/NotificationsController.php @@ -54,9 +54,9 @@ final class NotificationsController extends SimpleControllerBase /** - * @throws \JsonException * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException + * @throws \SP\Core\Exceptions\SPException */ public function notificationsAction(): void { diff --git a/app/modules/web/Controllers/Resource/ResourceBase.php b/app/modules/web/Controllers/Resource/ResourceBase.php index 6facea76..1acdd181 100644 --- a/app/modules/web/Controllers/Resource/ResourceBase.php +++ b/app/modules/web/Controllers/Resource/ResourceBase.php @@ -36,6 +36,10 @@ abstract class ResourceBase extends SimpleControllerBase { protected Minify $minify; + /** + * @throws \SP\Core\Exceptions\SessionTimeout + * @throws \SP\Core\Exceptions\SPException + */ public function __construct( Application $application, SimpleControllerHelper $simpleControllerHelper, diff --git a/app/modules/web/Controllers/SimpleControllerBase.php b/app/modules/web/Controllers/SimpleControllerBase.php index 2f870f9a..e514be08 100644 --- a/app/modules/web/Controllers/SimpleControllerBase.php +++ b/app/modules/web/Controllers/SimpleControllerBase.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. * @@ -24,7 +24,6 @@ namespace SP\Modules\Web\Controllers; -use Klein\Klein; use SP\Core\Acl\Acl; use SP\Core\Acl\UnauthorizedPageException; use SP\Core\Application; @@ -53,7 +52,6 @@ abstract class SimpleControllerBase protected ConfigFileService $config; protected ContextInterface $session; protected ThemeInterface $theme; - protected Klein $router; protected Acl $acl; protected Request $request; protected PhpExtensionChecker $extensionChecker; @@ -61,7 +59,6 @@ abstract class SimpleControllerBase /** * @throws \SP\Core\Exceptions\SessionTimeout - * @throws \JsonException */ public function __construct( Application $application, @@ -87,8 +84,8 @@ abstract class SimpleControllerBase /** * Comprobaciones * - * @throws SessionTimeout - * @throws \JsonException + * @throws \SP\Core\Exceptions\SPException + * @throws \SP\Core\Exceptions\SessionTimeout */ protected function checks(): void { diff --git a/app/modules/web/Controllers/Traits/JsonTrait.php b/app/modules/web/Controllers/Traits/JsonTrait.php index 56b01ec5..127fcfd6 100644 --- a/app/modules/web/Controllers/Traits/JsonTrait.php +++ b/app/modules/web/Controllers/Traits/JsonTrait.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. * @@ -34,23 +34,21 @@ use SP\Http\JsonResponse; * Trait JsonTrait * * @property SessionContext $session + * @property \Klein\Klein $router */ trait JsonTrait { /** * Returns JSON response * - * @param int $status Status code - * @param string $description Untranslated description string - * @param array|null $messages Untranslated massages array of strings + * @param int $status Status code + * @param string $description Untranslated description string + * @param array|null $messages Untranslated massages array of strings * - * @throws \JsonException + * @return bool + * @throws \SP\Core\Exceptions\SPException */ - protected function returnJsonResponse( - int $status, - string $description, - ?array $messages = null - ): bool + protected function returnJsonResponse(int $status, string $description, ?array $messages = null): bool { $jsonResponse = new JsonResponse(); $jsonResponse->setStatus($status); @@ -60,19 +58,19 @@ trait JsonTrait $jsonResponse->setMessages($messages); } - return Json::fromDic()->returnJson($jsonResponse); + return Json::factory($this->router->response())->returnJson($jsonResponse); } /** * Returns JSON response * - * @param mixed $data - * @param int $status Status code - * @param string|null $description Untranslated description string - * @param array|null $messages + * @param mixed $data + * @param int $status Status code + * @param string|null $description Untranslated description string + * @param array|null $messages * * @return bool - * @throws \JsonException + * @throws \SP\Core\Exceptions\SPException */ protected function returnJsonResponseData( $data, @@ -93,29 +91,28 @@ trait JsonTrait $jsonResponse->setMessages($messages); } - return Json::fromDic()->returnJson($jsonResponse); + return Json::factory($this->router->response())->returnJson($jsonResponse); } /** * Returns JSON response * - * @throws \JsonException + * @param \Exception $exception + * @param int $status + * + * @return bool + * @throws \SP\Core\Exceptions\SPException */ - protected function returnJsonResponseException( - Exception $exception, - int $status = JsonResponse::JSON_ERROR - ): bool + protected function returnJsonResponseException(Exception $exception, int $status = JsonResponse::JSON_ERROR): bool { $jsonResponse = new JsonResponse(); $jsonResponse->setStatus($status); $jsonResponse->setDescription($exception->getMessage()); - if ($exception instanceof SPException - && $exception->getHint() !== null - ) { + if ($exception instanceof SPException && $exception->getHint() !== null) { $jsonResponse->setMessages([$exception->getHint()]); } - return Json::fromDic()->returnJson($jsonResponse); + return Json::factory($this->router->response())->returnJson($jsonResponse); } } \ No newline at end of file diff --git a/app/modules/web/Controllers/Traits/WebControllerTrait.php b/app/modules/web/Controllers/Traits/WebControllerTrait.php index 4a790e78..0c76c647 100644 --- a/app/modules/web/Controllers/Traits/WebControllerTrait.php +++ b/app/modules/web/Controllers/Traits/WebControllerTrait.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. * @@ -66,7 +66,7 @@ trait WebControllerTrait } /** - * @throws \JsonException + * @throws \SP\Core\Exceptions\SPException */ private function handleSessionTimeout(): void { diff --git a/lib/Definitions.php b/lib/Definitions.php index b25f21c2..d08d9fe5 100644 --- a/lib/Definitions.php +++ b/lib/Definitions.php @@ -4,7 +4,7 @@ * * @author nuxsmin * @link https://syspass.org - * @copyright 2012-2020, Rubén Domínguez nuxsmin@$syspass.org + * @copyright 2012-2022, Rubén Domínguez nuxsmin@$syspass.org * * This file is part of sysPass. * @@ -19,7 +19,7 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with sysPass. If not, see . + * along with sysPass. If not, see . */ use Monolog\Logger; @@ -30,6 +30,7 @@ use SP\Core\Acl\Actions; use SP\Core\Application; use SP\Core\Context\ContextFactory; use SP\Core\Context\ContextInterface; +use SP\Core\Crypt\CryptPKI; use SP\Core\Crypt\CSRF; use SP\Core\Language; use SP\Core\LanguageInterface; @@ -75,7 +76,7 @@ use function DI\get; return [ RequestInterface::class => create(Request::class) - ->constructor(\Klein\Request::createFromGlobals()), + ->constructor(\Klein\Request::createFromGlobals(), autowire(CryptPKI::class)), ContextInterface::class => static fn() => ContextFactory::getForModule(APP_MODULE), ConfigInterface::class => create(ConfigFileService::class) @@ -101,10 +102,7 @@ return [ new XmlHandler(new FileHandler(MIMETYPES_FILE)) ), Acl::class => autowire(Acl::class) - ->constructorParameter( - 'action', - get(Actions::class) - ), + ->constructorParameter('actions', get(Actions::class)), ThemeInterface::class => autowire(Theme::class) ->constructorParameter('module', APP_MODULE) ->constructorParameter( diff --git a/lib/SP/Core/Bootstrap/BootstrapApi.php b/lib/SP/Core/Bootstrap/BootstrapApi.php index 7dc39c40..32adc84f 100644 --- a/lib/SP/Core/Bootstrap/BootstrapApi.php +++ b/lib/SP/Core/Bootstrap/BootstrapApi.php @@ -25,6 +25,7 @@ namespace SP\Core\Bootstrap; use Closure; +use Exception; use Klein\Response; use Psr\Container\ContainerExceptionInterface; use Psr\Container\ContainerInterface; @@ -52,9 +53,6 @@ final class BootstrapApi extends BootstrapBase logger('------------'); logger('Boostrap:api'); - // TODO: remove - self::$container = $container; - try { /** @noinspection SelfClassReferencingInspection */ $bs = $container->get(BootstrapApi::class); @@ -85,11 +83,11 @@ final class BootstrapApi extends BootstrapBase try { logger('API route'); - $apiRequest = self::$container->get(ApiRequest::class); + $apiRequest = $this->createObjectFor(ApiRequest::class); [$controllerName, $action] = explode('/', $apiRequest->getMethod()); - $controllerClass = self::getClassFor($controllerName); + $controllerClass = self::getClassFor($controllerName, $action); $method = $action.'Action'; @@ -118,8 +116,8 @@ final class BootstrapApi extends BootstrapBase logger('Routing call: '.$controllerClass.'::'.$method); - return call_user_func([new $controllerClass(self::$container, $method), $method]); - } catch (\Exception $e) { + return call_user_func([$this->createObjectFor($controllerClass), $method]); + } catch (Exception $e) { processException($e); /** @var Response $response */ diff --git a/lib/SP/Core/Bootstrap/BootstrapBase.php b/lib/SP/Core/Bootstrap/BootstrapBase.php index 3ac7f2cc..3812cf00 100644 --- a/lib/SP/Core/Bootstrap/BootstrapBase.php +++ b/lib/SP/Core/Bootstrap/BootstrapBase.php @@ -28,7 +28,10 @@ use Closure; use Klein\Klein; use Klein\Response; use PHPMailer\PHPMailer\Exception; +use Psr\Container\ContainerExceptionInterface; use Psr\Container\ContainerInterface; +use Psr\Container\NotFoundExceptionInterface; +use RuntimeException; use SP\Core\Exceptions\InitializationException; use SP\Core\Exceptions\SPException; use SP\Core\Language; @@ -63,13 +66,14 @@ abstract class BootstrapBase /** * @var mixed */ - public static $LOCK; - public static bool $checkPhpVersion = false; - protected static ContainerInterface $container; - protected Klein $router; - protected RequestInterface $request; - protected ConfigDataInterface $configData; - private UpgradeConfigChecker $upgradeConfigChecker; + public static $LOCK; + public static bool $checkPhpVersion = false; + protected Klein $router; + protected RequestInterface $request; + protected ConfigDataInterface $configData; + private ContainerInterface $container; + private UpgradeConfigChecker $upgradeConfigChecker; + private PhpExtensionChecker $phpExtensionChecker; /** * Bootstrap constructor. @@ -78,7 +82,9 @@ abstract class BootstrapBase ConfigDataInterface $configData, Klein $router, RequestInterface $request, - UpgradeConfigChecker $upgradeConfigChecker + UpgradeConfigChecker $upgradeConfigChecker, + PhpExtensionChecker $extensionChecker, + ContainerInterface $container ) { // Set the default language Language::setLocales('en_US'); @@ -87,6 +93,8 @@ abstract class BootstrapBase $this->router = $router; $this->request = $request; $this->upgradeConfigChecker = $upgradeConfigChecker; + $this->phpExtensionChecker = $extensionChecker; + $this->container = $container; $this->initRouter(); $this->configureRouter(); @@ -122,8 +130,7 @@ abstract class BootstrapBase { $response->header( 'Access-Control-Allow-Origin', - $this->configData->getApplicationUrl() - ?? $this->request->getHttpHost() + $this->configData->getApplicationUrl() ?? $this->request->getHttpHost() ); $response->header( 'Access-Control-Allow-Headers', @@ -136,9 +143,13 @@ abstract class BootstrapBase abstract public static function run(ContainerInterface $container): BootstrapBase; - public static function getContainer(): ContainerInterface + /** + * @deprecated + * FIXME: delete + */ + public static function getContainer() { - return self::$container; + return null; } final protected static function getClassFor(string $controllerName, ?string $actionName): string @@ -170,8 +181,6 @@ abstract class BootstrapBase } /** - * @throws \Psr\Container\ContainerExceptionInterface - * @throws \Psr\Container\NotFoundExceptionInterface * @throws \SP\Core\Exceptions\CheckException * @throws \SP\Core\Exceptions\ConfigException * @throws \SP\Core\Exceptions\InitializationException @@ -192,7 +201,7 @@ abstract class BootstrapBase // Set application paths $this->initPaths(); - self::$container->get(PhpExtensionChecker::class)->checkMandatory(); + $this->phpExtensionChecker->checkMandatory(); if (!self::$checkPhpVersion) { throw new InitializationException( @@ -316,4 +325,20 @@ abstract class BootstrapBase { PluginManager::getPlugins(); } + + /** + * @param string $class + * + * @return object + */ + final protected function createObjectFor(string $class): object + { + try { + return $this->container->get($class); + } catch (NotFoundExceptionInterface|ContainerExceptionInterface $e) { + processException($e); + + throw new RuntimeException($e); + } + } } \ No newline at end of file diff --git a/lib/SP/Core/Bootstrap/BootstrapWeb.php b/lib/SP/Core/Bootstrap/BootstrapWeb.php index a067b2ba..b01e2f8e 100644 --- a/lib/SP/Core/Bootstrap/BootstrapWeb.php +++ b/lib/SP/Core/Bootstrap/BootstrapWeb.php @@ -27,7 +27,6 @@ namespace SP\Core\Bootstrap; use Closure; use Exception; -use Klein\Response; use Psr\Container\ContainerExceptionInterface; use Psr\Container\ContainerInterface; use Psr\Container\NotFoundExceptionInterface; @@ -56,13 +55,11 @@ final class BootstrapWeb extends BootstrapBase logger('------------'); logger('Boostrap:web'); - // TODO: remove - self::$container = $container; - try { /** @noinspection SelfClassReferencingInspection */ $bs = $container->get(BootstrapWeb::class); $bs->module = $container->get(InitWeb::class); + $bs->handleRequest(); return $bs; @@ -76,11 +73,7 @@ final class BootstrapWeb extends BootstrapBase protected function configureRouter(): void { // Manage requests for web module - $this->router->respond( - ['GET', 'POST'], - '@(?!/api\.php)', - $this->manageWebRequest() - ); + $this->router->respond(['GET', 'POST'], '@(?!/api\.php)', $this->manageWebRequest()); } private function manageWebRequest(): Closure @@ -104,19 +97,11 @@ final class BootstrapWeb extends BootstrapBase } $controllerName = $matches['controller'][0]; - $actionName = empty($matches['action'][0]) ? 'index' : $matches['action'][0]; + $actionName = empty($matches['actions'][0]) ? 'index' : $matches['actions'][0]; $methodName = sprintf('%sAction', $actionName); $methodParams = empty($matches['params'][0]) ? [] - : Filter::getArray( - explode( - '/', - trim( - $matches['params'][0], - '/' - ) - ) - ); + : Filter::getArray(explode('/', trim($matches['params'][0], '/'))); $controllerClass = self::getClassFor($controllerName, $actionName); @@ -145,7 +130,7 @@ final class BootstrapWeb extends BootstrapBase ) ); - $controller = self::$container->get($controllerClass); + $controller = $this->createObjectFor($controllerClass); return call_user_func_array([$controller, $methodName], $methodParams); } catch (SessionTimeout $sessionTimeout) { @@ -153,11 +138,6 @@ final class BootstrapWeb extends BootstrapBase } catch (Exception $e) { processException($e); - /** @var Response $response */ - if ($response->status()->getCode() !== 404) { - $response->code(503); - } - echo __($e->getMessage()); if (DEBUG) { diff --git a/lib/SP/Core/Crypt/OldCrypt.php b/lib/SP/Core/Crypt/OldCrypt.php index f2df047b..f288d060 100644 --- a/lib/SP/Core/Crypt/OldCrypt.php +++ b/lib/SP/Core/Crypt/OldCrypt.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. * @@ -26,7 +26,6 @@ namespace SP\Core\Crypt; use SP\Core\Bootstrap\BootstrapBase; use SP\Core\Exceptions\SPException; -use SP\Domain\Config\In\ConfigDataInterface; use SP\Util\Checks; defined('APP_ROOT') || die(); @@ -67,7 +66,7 @@ final class OldCrypt public static function makeHashSalt($salt = null, $random = true) { /** @var \SP\Domain\Config\In\ConfigDataInterface $ConfigData */ - $ConfigData = BootstrapBase::getContainer()['configData']; + $ConfigData = BootstrapBase::getContainer()['configData']; // FIXME if ($random === true) { $salt = bin2hex(self::getIV()); diff --git a/lib/SP/Domain/Common/Services/ServiceItemTrait.php b/lib/SP/Domain/Common/Services/ServiceItemTrait.php index 35ac7a87..7c5d1212 100644 --- a/lib/SP/Domain/Common/Services/ServiceItemTrait.php +++ b/lib/SP/Domain/Common/Services/ServiceItemTrait.php @@ -24,11 +24,6 @@ namespace SP\Domain\Common\Services; -use Psr\Container\ContainerExceptionInterface; -use Psr\Container\NotFoundExceptionInterface; -use SP\Core\Bootstrap\BootstrapBase; -use SP\DataModel\DataModelInterface; - /** * Trait ServiceItemTrait * @@ -36,23 +31,6 @@ use SP\DataModel\DataModelInterface; */ trait ServiceItemTrait { - /** - * Returns service items for a select - * - * @return DataModelInterface[] - * @throws ContainerExceptionInterface - * @throws NotFoundExceptionInterface - * - * @deprecated - * TODO: remove!! - */ - public static function getItemsBasic(): array - { - return BootstrapBase::getContainer() - ->get(static::class) - ->getAllBasic(); - } - /** * Get all items from the service's repository * diff --git a/lib/SP/Html/Minify.php b/lib/SP/Html/Minify.php index cd2a1ce7..958e2701 100644 --- a/lib/SP/Html/Minify.php +++ b/lib/SP/Html/Minify.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. * @@ -25,8 +25,6 @@ namespace SP\Html; use Klein\Klein; -use Psr\Container\ContainerExceptionInterface; -use Psr\Container\NotFoundExceptionInterface; use SP\Http\Request; defined('APP_ROOT') || die(); diff --git a/lib/SP/Http/Json.php b/lib/SP/Http/Json.php index 3e2288bd..d967432c 100644 --- a/lib/SP/Http/Json.php +++ b/lib/SP/Http/Json.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. * @@ -25,9 +25,7 @@ namespace SP\Http; use JsonException; -use Klein\Klein; use Klein\Response; -use SP\Core\Bootstrap\BootstrapBase; use SP\Core\Exceptions\SPException; @@ -58,18 +56,6 @@ final class Json return new self($response); } - /** - * @return Json - */ - public static function fromDic(): Json - { - return new self( - BootstrapBase::getContainer() - ->get(Klein::class) - ->response() - ); - } - /** * Devuelve un array con las cadenas formateadas para JSON */ @@ -78,7 +64,7 @@ final class Json if (is_array($data) || is_object($data)) { array_walk_recursive( $data, - static function (&$value) { + static function ($value) { if (is_object($value)) { foreach ($value as $property => $v) { if (is_string($v) && $v !== '') { @@ -132,7 +118,10 @@ final class Json /** * Devuelve una respuesta en formato JSON con el estado y el mensaje. * - * @throws \JsonException + * @param \SP\Http\JsonResponse $jsonResponse + * + * @return bool + * @throws \SP\Core\Exceptions\SPException */ public function returnJson(JsonResponse $jsonResponse): bool { @@ -144,7 +133,7 @@ final class Json $jsonResponse = new JsonResponse($e->getMessage()); $jsonResponse->addMessage($e->getHint()); - $this->response->body(json_encode($jsonResponse, JSON_THROW_ON_ERROR)); + $this->response->body(self::getJson($jsonResponse)); } return $this->response->send(true)->isSent(); @@ -160,17 +149,10 @@ final class Json */ public static function getJson($data, int $flags = 0): string { - try { - $json = json_encode($data, JSON_THROW_ON_ERROR | $flags); + return json_encode($data, JSON_THROW_ON_ERROR | $flags); } catch (JsonException $e) { - throw new SPException( - __u('Encoding error'), - SPException::CRITICAL, - json_last_error_msg() - ); + throw new SPException(__u('Encoding error'), SPException::ERROR, $e->getMessage()); } - - return $json; } } \ No newline at end of file diff --git a/lib/SP/Http/Request.php b/lib/SP/Http/Request.php index 23eaff60..1b94e562 100644 --- a/lib/SP/Http/Request.php +++ b/lib/SP/Http/Request.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. * @@ -27,7 +27,6 @@ namespace SP\Http; use Exception; use Klein\DataCollection\DataCollection; use Klein\DataCollection\HeaderDataCollection; -use SP\Core\Bootstrap\BootstrapBase; use SP\Core\Crypt\CryptPKI; use SP\Core\Crypt\Hash; use SP\Core\Exceptions\SPException; @@ -46,8 +45,9 @@ class Request implements RequestInterface */ public const SECURE_DIRS = ['css', 'js']; - private HeaderDataCollection $headers; private \Klein\Request $request; + private CryptPKI $cryptPKI; + private HeaderDataCollection $headers; private DataCollection $params; private ?string $method = null; private ?bool $https = null; @@ -55,9 +55,10 @@ class Request implements RequestInterface /** * Request constructor. */ - public function __construct(\Klein\Request $request) + public function __construct(\Klein\Request $request, CryptPKI $cryptPKI) { $this->request = $request; + $this->cryptPKI = $cryptPKI; $this->headers = $this->request->headers(); $this->params = $this->getParamsByMethod(); $this->detectHttps(); @@ -211,8 +212,7 @@ class Request implements RequestInterface try { // Desencriptar con la clave RSA - $clearData = BootstrapBase::getContainer()->get(CryptPKI::class) - ->decryptRSA(base64_decode($encryptedData)); + $clearData = $this->cryptPKI->decryptRSA(base64_decode($encryptedData)); // Desencriptar con la clave RSA if ($clearData === null) { diff --git a/lib/SP/Mvc/Controller/ControllerTrait.php b/lib/SP/Mvc/Controller/ControllerTrait.php index 5ba568ee..944b7c3f 100644 --- a/lib/SP/Mvc/Controller/ControllerTrait.php +++ b/lib/SP/Mvc/Controller/ControllerTrait.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. * @@ -25,6 +25,7 @@ namespace SP\Mvc\Controller; use Closure; +use Klein\Klein; use SP\Core\Bootstrap\BootstrapBase; use SP\Core\Exceptions\SPException; use SP\Domain\Config\In\ConfigDataInterface; @@ -42,6 +43,7 @@ use SP\Util\Util; */ trait ControllerTrait { + protected Klein $router; protected string $controllerName; protected function getControllerName(): string @@ -61,7 +63,11 @@ trait ControllerTrait /** * Logout from current session * - * @throws \JsonException + * @param \SP\Http\RequestInterface $request + * @param \SP\Domain\Config\In\ConfigDataInterface $configData + * @param \Closure $onRedirect + * + * @throws \SP\Core\Exceptions\SPException */ protected function sessionLogout( RequestInterface $request, @@ -72,7 +78,7 @@ trait ControllerTrait $jsonResponse = new JsonResponse(__u('Session not started or timed out')); $jsonResponse->setStatus(10); - Json::fromDic()->returnJson($jsonResponse); + Json::factory($this->router->response())->returnJson($jsonResponse); } elseif ($request->isAjax()) { Util::logout(); } else { @@ -105,11 +111,11 @@ trait ControllerTrait /** * Acción no disponible * - * @throws \JsonException + * @throws \SP\Core\Exceptions\SPException */ protected function invalidAction(): void { - Json::fromDic()->returnJson(new JsonResponse(__u('Invalid Action'))); + Json::factory($this->router->response())->returnJson(new JsonResponse(__u('Invalid Action'))); } /** diff --git a/lib/SP/Plugin/PluginManager.php b/lib/SP/Plugin/PluginManager.php index 7b64179b..2f1c6adc 100644 --- a/lib/SP/Plugin/PluginManager.php +++ b/lib/SP/Plugin/PluginManager.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. * @@ -160,7 +160,7 @@ class PluginManager /** @var PluginInterface $plugin */ $plugin = $reflectionClass->newInstance( - BootstrapBase::getContainer(), + BootstrapBase::getContainer(), // FIXME new PluginOperation($this->pluginDataService, $pluginName) );