bsadnu / grand-id-bundle
Symfony 扩展,用于使用 Grand ID 服务 https://www.grandid.com/
v0.1.9
2018-06-20 07:45 UTC
Requires
- php: ^7.1
- guzzlehttp/guzzle: ^6.0
- symfony/framework-bundle: ^4.0
- symfony/orm-pack: ^1.0
README
此扩展提供了一些必要的服务方法,用于与 Grand ID API 一起工作。所有会话数据都存储在数据库中。
存在所谓的模拟系统,这对于测试目的很有帮助。模拟方法不调用任何 Grand ID API 端点。它们只是模拟会话:在数据库表中创建、存储和更新它们。
安装
使用 Symfony Flex 的应用程序
打开命令行控制台,进入您的项目目录,并执行以下命令
$ composer require bsadnu/grand-id-bundle
不使用 Symfony Flex 的应用程序
步骤 1:下载 Bundle
打开命令行控制台,进入您的项目目录,并执行以下命令以下载此 Bundle 的最新稳定版本
$ composer require bsadnu/grand-id-bundle
此命令要求您全局安装 Composer,如 Composer 文档中的 安装章节 所述。
步骤 2:启用 Bundle
然后,通过将其添加到项目 app/AppKernel.php 文件中注册的 Bundle 列表中来启用此 Bundle
<?php // app/AppKernel.php // ... class AppKernel extends Kernel { public function registerBundles() { $bundles = array( // ... new Bsadnu\GrandIDBundle\GrandIDBundle(), ); // ... } // ... }
配置
添加 config/packages/grand_id.yaml 文件,包含以下设置
grand_id: base_url: '%env(GRAND_ID_BASE_URL)%' #(e.g. https://client-test.grandid.com/json1.1/) api_key: '%env(GRAND_ID_API_KEY)%' authenticate_service_key: '%env(GRAND_ID_AUTH_SERVICE_KEY)%'
执行 bin/console doctrine:migrations:diff 和 bin/console doctrine:migrations:migrate 命令以创建 Grand ID 会话数据库表。
使用方法
在您的控制器中某个位置
<?php ... use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Bundle\FrameworkBundle\Controller\Controller; ... class SomeController extends Controller { ... private $bankIdProvider; public function __construct(ContainerInterface $container) { $this->bankIdProvider = $container->get('bsadnu.grand_id'); } public function doSomething() { ... $callBackUrl = 'https://domain.com/my/action' $loginObject = $this->bankIdProvider->federatedLogin($callBackUrl); ... } ... }
可用方法
federatedLogin(string $callbackUrl)- 执行真实的 FederatedLogin API 调用。存储真实的会话参数。federatedLoginMock(string $callbackUrl, string $host, string $protocol)- 不执行任何 API 调用。仅存储模拟会话参数。federatedDirectLogin(string $username, string $password)- 执行真实的 FederatedDirectLogin API 调用。存储真实的会话参数。logout(string $sessionId)- 执行真实的 API 登出。更新相关的数据库记录。logoutMock(string $sessionId)- 不执行任何 API 调用。仅更新某些数据库记录。getSession(string $sessionId)- 通过调用真实的 API GetSession 获取会话参数。getSessionMock(string $sessionId)- 从数据库中获取模拟会话参数。enableMockSession(string $sessionId, string $username)- 通过添加用户名并将 is_logged_in 设置为 true 来更新模拟会话数据库记录。