. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Controllers; use Espo\Core\Api\Response; use Espo\Core\Exceptions\Forbidden; use Espo\Core\Api\Request; use Espo\Core\Utils\Json; use Espo\Core\Utils\Metadata as MetadataUtil; use Espo\Entities\User as UserEntity; use Espo\Tools\App\MetadataService as Service; use stdClass; class Metadata { private Service $service; private MetadataUtil $metadata; private UserEntity $user; public function __construct( Service $service, MetadataUtil $metadata, UserEntity $user ) { $this->service = $service; $this->metadata = $metadata; $this->user = $user; } public function getActionRead(Request $request): mixed { $key = $request->getQueryParam('key'); if (is_string($key)) { return $this->service->getDataForFrontendByKey($key); } return $this->service->getDataForFrontend(); } /** * @throws Forbidden */ public function getActionGet(Request $request, Response $response): void { if (!$this->user->isAdmin()) { throw new Forbidden(); } $key = $request->getQueryParam('key'); $value = $this->metadata->get($key); $response->writeBody(Json::encode($value)); } }