sgomez/simplesamlphp-module-dbal

一个SimpleSAMLphp模块,增加对Doctrine/DBAL的支持。

安装次数: 20,903

依赖关系: 1

建议者: 0

安全性: 0

星标: 3

关注者: 0

分支: 0

开放性问题: 2

类型:simplesamlphp-module

2.0.3 2017-06-13 16:36 UTC

This package is auto-updated.

Last update: 2024-08-27 19:10:51 UTC


README

本软件包通过SimpleSAMLphp模块安装,并使用Composer添加新的数据存储库(Doctrine/DBAL库)。安装可以通过执行以下命令完成:

composer require sgomez/simplesamlphp-module-dbal ~1.0 # for SSP >= 1.14
composer require sgomez/simplesamlphp-module-dbal ~2.0 # for SSP >= 2.0|master

配置

您需要在配置文件中指定下一个store.type

    'store.type'                    => 'SimpleSAML\Modules\DBAL\Store\DBAL',

并将模板配置文件从modules/dbal/config-templates/module_dbal.php复制到您的配置基本目录。您必须使用您的数据库连接配置编辑它。

本模块支持与Doctrine/DBAL相同的引擎。有关语法的详细信息,请参阅Doctrine DBAL配置

$config = array (
    'store.dbal.url'                => 'mysql://user:password@localhost:3306/simplesamlphp?charset=utf8mb4&serverVersion=5.7',
    // 'store.dbal.url'                => 'sqlite:///simplesamlphp.sqlite',
);

如果您想自动清理旧密钥,请记住启用并配置cron模块。

创建模式

模式不是每次调用存储时都创建(如SQL存储)。您需要手动创建它。每次安装或更新使用DBAL存储的模块时,您都需要运行此命令。

bash$ vendor/bin/dbalschema

创建新模式

如果您想在模块中创建自己的模式,您需要在hooks目录中创建一个hook_dbal.php文件。每次启动dbalschema时都会运行此文件。

这是一个模板

<?php

function modulename_hook_dbal(&$dbinfo)
{
    $store = SimpleSAML_Store::getInstance();
    
    if (! $store instanceof \SimpleSAML\Modules\DBAL\Store\DBAL ) {
        throw new \SimpleSAML_Error_Exception('OAuth2 module: Only DBAL Store is supported');
    }
    
    $schema = new \Doctrine\DBAL\Schema\Schema();
    
    $fooTable = $store->getPrefix().'_foo';
    $foo = $schema->createTable($fooTable);
    $foo->addColumn('id', 'string', [ 'length' => 255 ]);
    $foo->addColumn('name', 'string', [ 'length' => 255 ]);
    $foo->setPrimaryKey(['id']);
    
    $barTable = $store->getPrefix().'_bar';
    $bar = $schema->createTable($barTable);
    $bar->addColumn('id', 'string', [ 'length' => 255 ]);
    $bar->addColumn('expires_at', 'datetime');
    $bar->addColumn('foo_id', 'string', [ 'length' => 255 ]);
    $bar->setPrimaryKey(['id']);
    $bar->addForeignKeyConstraint($foo, ['foo_id'], ['id'], ['onDelete' => 'CASCADE']);
    
    $store->createOrUpdateSchema($schema, $store->getPrefix().'_modulename');
    
    $dbinfo['summary'][] = 'Created ModuleName Schema';
}

Doctrine DBAL几乎在所有情况下都能更新您的模式而无需删除它。要了解所有类型和选项,请参阅Doctrine DBAL文档