azine / js-crypto-store-bundle
Symfony 扩展包,用于将客户端(浏览器)端加密的文件存储到数据库中。
Requires
- php: >7.0
- doctrine/orm: ~2.0,>=2.2
- monolog/monolog: >=1.6.0,^1.6|^2.0|^3.0
- symfony/console: ^4.4|^5.4|^6.3
- symfony/finder: ^4.4|^5.4|^6.3
- symfony/framework-bundle: ^4.4|^5.4|^6.3
- symfony/twig-bundle: ^4.4|^5.4|^6.3
- symfony/yaml: ^4.4|^5.4|^6.3
Requires (Dev)
- phpunit/phpunit: ^6.0|^7.0|^8.0
This package is auto-updated.
Last update: 2024-08-27 00:37:31 UTC
README
Symfony 扩展包,用于将客户端(浏览器)端加密的文件存储到服务器端。
元数据存储在数据库中,文件内容存储在文件系统中。
使用纯JS和斯坦福JavaScript加密库(See https://github.com/bitwiseshiftleft/sjcl/)
特性
- 上传受密码保护的加密文件
- 通过链接共享文件
- 将加密文件归入一个链接下,一次共享多个文件
- 为将由清理命令删除的文件设置过期日期
- 清理命令,可以通过cronjob运行以删除过期文件
安装
要使用Composer安装AzineEmailBundle,只需将以下内容添加到您的composer.json
文件中
// composer.json { require: { "azine/azine/js-crypto-store-bundle": "dev-master" } }
然后,您可以通过从您的composer.json
文件所在的目录运行Composer的update命令来安装新的依赖项
php composer.phar update
现在,Composer将自动下载所有必需的文件,并为您安装它们。接下来需要做的就是更新您的AppKernel.php文件,并注册新的扩展包。AzineEmailBundle依赖于KnpPaginatorBundle,因此在安装后也需要将其添加到AppKernel.php文件中。
<?php // in AppKernel::registerBundles() $bundles = array( // ... new Azine\JsCryptoStoreBundle\AzineJsCryptoStoreBundle(), // ... );
注册AzineEmailBundle的路由
# in app/config/routing.yml # Default configuration for "AzineJsCryptoStoreBundle" azine_js_crypto_store: # Service used to get the ownerId (e.g. the current user id) to associate uploaded files with the current user. All files with the same owner_id as provided by this service will be shown on the dashboard ownerProvider: Azine\JsCryptoStoreBundle\Service\DefaultOwnerProvider # Encryption Ciper Algorythm. Default: aes encryptionCipher: aes # Encryption Mode. Default: 'gcm' (Galois/Counter mode) encryptionMode: gcm # Encryption Key Hash-Iterations. Default: 1000 encryptionIterations: 1000 # KS. Default: 256 encryptionKs: 256 # TS. Default: 128 encryptionTs: 128 # Default expiry time/date for documents. Format: input for DateTime(). Default: '14 days' defaultLifeTime: '14 days' # Maximum file size in bytes for the encryption. Default: 50'000'000 = 50mb maxFileSize: 50000000
有关加密的有效配置选项,请参阅https://github.com/bitwiseshiftleft/sjcl/
自定义日期时间选择器小部件
为了更容易选择上传和加密文件的过期日期和时间段,您可以通过JS包括一个日期选择器小部件。
http://foundation-datepicker.peterbeno.com/是一个很好的例子。将其js和css文件包含在您的站点中,并在您的JS中添加以下片段。
// jquery DateTime-picker widget
$("input[type='datetime-local']").fdatepicker({
format: 'yyyy-mm-dd hh:ii',
disableDblClickSelection: true,
pickTime: true
});
自定义所有者提供者
为了能够在团队或公司的用户之间共享上传文件的行政管理,您可以实现自定义逻辑以返回所有者ID。
例如,通过用户角色或您存储在用户上的组/团队/公司属性。
您只需实现自己的\Azine\JsCryptoStoreBundle\Service\OwnerProviderInterface
版本,将其作为服务发布,并在config.yml中设置对其实现的引用。