diff --git a/Admin/Install/db.json b/Admin/Install/db.json index fa2f9f6..7bdb5d6 100755 --- a/Admin/Install/db.json +++ b/Admin/Install/db.json @@ -111,6 +111,11 @@ "name": "editor_doc_visible", "type": "TINYINT", "null": false + }, + "editor_doc_encrypted": { + "name": "editor_doc_encrypted", + "type": "TINYINT", + "null": false } } }, diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 686d969..82a77f6 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -32,6 +32,7 @@ use phpOMS\Message\Http\RequestStatusCode; use phpOMS\Message\RequestAbstract; use phpOMS\Message\ResponseAbstract; use phpOMS\Model\Html\Head; +use phpOMS\Security\EncryptionHelper; use phpOMS\System\MimeType; use phpOMS\Utils\Parser\Markdown\Markdown; use phpOMS\Views\View; @@ -196,6 +197,15 @@ final class ApiController extends Controller $doc->createdBy = new NullAccount($request->header->account); $doc->version = $request->getDataString('version') ?? ''; $doc->setVirtualPath($request->getDataString('virtualpath') ?? '/'); + $doc->isEncrypted = $request->getDataBool('isencrypted') ?? false; + $doc->isVisible = $request->getDataBool('isvisible') ?? true; + + if ($request->getDataBool('isencrypted') + && !empty($_SERVER['OMS_PRIVATE_KEY_I'] ?? '') + ) { + $doc->plain = EncryptionHelper::encryptShared($doc->plain, $_SERVER['OMS_PRIVATE_KEY_I']); + $doc->content = EncryptionHelper::encryptShared($doc->content, $_SERVER['OMS_PRIVATE_KEY_I']); + } if ($request->hasData('tags')) { $doc->tags = $this->app->moduleManager->get('Tag', 'Api')->createTagsFromRequest($request); diff --git a/Models/EditorDoc.php b/Models/EditorDoc.php index 810be59..3f004f1 100755 --- a/Models/EditorDoc.php +++ b/Models/EditorDoc.php @@ -93,6 +93,14 @@ class EditorDoc implements \JsonSerializable */ public bool $isVisible = true; + /** + * Doc is encrypted. + * + * @var bool + * @since 1.0.0 + */ + public bool $isEncrypted = false; + /** * Created. * diff --git a/Models/EditorDocMapper.php b/Models/EditorDocMapper.php index 0b1b392..837b563 100755 --- a/Models/EditorDocMapper.php +++ b/Models/EditorDocMapper.php @@ -51,6 +51,7 @@ final class EditorDocMapper extends DataMapperFactory 'editor_doc_created_at' => ['name' => 'editor_doc_created_at', 'type' => 'DateTimeImmutable', 'internal' => 'createdAt'], 'editor_doc_created_by' => ['name' => 'editor_doc_created_by', 'type' => 'int', 'internal' => 'createdBy'], 'editor_doc_visible' => ['name' => 'editor_doc_visible', 'type' => 'bool', 'internal' => 'isVisible'], + 'editor_doc_encrypted' => ['name' => 'editor_doc_encrypted', 'type' => 'bool', 'internal' => 'isEncrypted'], ]; /** diff --git a/Theme/Backend/Components/Editor/inline-editor.tpl.php b/Theme/Backend/Components/Editor/inline-editor.tpl.php index b881bcd..befb038 100755 --- a/Theme/Backend/Components/Editor/inline-editor.tpl.php +++ b/Theme/Backend/Components/Editor/inline-editor.tpl.php @@ -1,3 +1,20 @@ +