azine/js-crypto-store-bundle

Symfony 扩展包,用于将客户端(浏览器)端加密的文件存储到数据库中。

dev-master 2023-06-26 21:55 UTC

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中设置对其实现的引用。

构建状态等。

Build Status Total Downloads Latest Stable Version Scrutinizer Quality Score Code Coverage