AuthShield = $AuthShield; $this->container=(null!==$container) ? $container : $AuthShield->getAppShield()->getContainer(); } /** public function auth(\UMA\JsonRpc\Request $request){ return 'admin' === $this->container->get('webfan.app.fsm.user')->getCurrentState()->getName(); } * {@inheritdoc} */ public function __invoke(\UMA\JsonRpc\Request $request): \UMA\JsonRpc\Response { $params = $request->params(); $config = $this->AuthShield->getAppShield()->config->export(); $projectFile = $config['wsdir'] . 'frdl-projects' . \DIRECTORY_SEPARATOR . preg_replace("/^[A-Za-z0-9\-\_]/", '', $params->project_directory ) . \DIRECTORY_SEPARATOR . 'frdl.project.json'; if(!file_exists($projectFile)){ return new \UMA\JsonRpc\Error($request->id(), 'Project not found'); } $setterFile = rtrim($params->module_directory, \DIRECTORY_SEPARATOR) . \DIRECTORY_SEPARATOR . 'admin'.\DIRECTORY_SEPARATOR.'config'.\DIRECTORY_SEPARATOR.'set.php'; $stdConfigFile = dirname($projectFile) . \DIRECTORY_SEPARATOR . 'config' . \DIRECTORY_SEPARATOR . basename($params->module_directory) . \DIRECTORY_SEPARATOR . 'config.php'; if(!isset($params->key)){ $params->key = null; } try{ $this->AuthShield->getAppShield()->emitter->emit('project.autoload.force', dirname($projectFile)); if(file_exists($setterFile)){ $this->getSetter($setterFile)->set($params->value, $params->key); }elseif(file_exists($stdConfigFile)){ if(isset($params->key) && null!==$params->key){ $result = require $stdConfigFile; if(is_array($result)){ $result[$params->key] = $params->value; }elseif(is_object($result) && property_exists($result, $params->key) ){ $result->{$params->key} = $params->value; }else{ return new \UMA\JsonRpc\Error($request->id(), sprintf('Cannot set `%s` to config ['.__LINE__.']', $params->key)); } }else{ $result = $params->value; } $export = var_export($result, true); $code = <<id(), $e->getMessage()); } return new \UMA\JsonRpc\Success($request->id(), 'Config changed'); } protected function getSetter(string $setterFile) : ConfigSetterInterface { return require $setterFile; } public function getSpec(): ?\stdClass { return \json_decode(<<<'JSON' { "$schema": "https://json-schema.org/draft-07/schema#", "type": ["object"], "properties": { "project_directory" : { type : ["string"] }, "module_directory" : { type : ["string"] }, "value" : { type : ["number","string","boolean","object","array", "null"] }, "key" : { type : ["string", "null"] } }, "required" : ["project_directory", "module_directory", "value"], "additionalProperties": false } JSON ); } } __halt_compiler();----SIGNATURE:----nlOlGkb0QBbooF1OPjl4YxvkJpQyiWIfhNsFmH9+1KBgOvPWYzdOFP2xedyrPE21p5Thl5gBejcZCbkGCGZXrL0kHXN/AuYkCluMQgllGzS7yQS72Oy1iN399KJvxCbwp3VY6mRytUXLJ7QOG4+R9C8/9KL1eGNWUDXuvcZlnTF6Qi28VZOODLKMMftH/cgWlx4y1yCOMpLbSWZwPILLAdV+sWGLrXDe1qs9xn8uZbZGbUoUQmAXkZ9d6XyXIh+rhPxafd+L6MffpuvMvteEG36pe0fFdahWBcN/aW6lp/KOk1BSUdDJ3LxdTh7+ZV+MrXQ+DtrQ01xo8RgQVr9QR8QTgzwhd/i3IGybzQCsgY19qQohTXUOLtQk+Rc2MNxkWKvnCkA2XCTfdcX7y5iUrXDDfBcWUv2FNSnzmhfLkXssb5haJrVgA8u5BY53bEnacBmljP/gFrQKz7uLLElngP5xcR3O0VPpx3dHoOtLo+H0wCsTp3yPqChwpCkEAr0BZXxCKBkJ1uM7XzOpueTk5s5budUTFWmk4hfp1J+paOJe/YvdWFb4hO2lB14Z/XibgnLaKNVU5NIwaCzCR8R8m2NHmxhS4pYHaRudEhEKkN7DZ9F4ozoa9X2az4yxYc+PiTfa1s36/JQ/q/Kw+y6haCOiwbM/KVXrm9B5n8bXV6Q=----ATTACHMENT:----ODA2MTE4NTY4Nzc5NjE5NSA5Njk2MjMwNzIyMzIzNzM1IDU2MzI3NjA5NzEwNjExMTA=