beta / bx.openid
Bitrix openid 客户端
1.0.0
2024-06-18 07:56 UTC
Requires
- php: >=7.4
- ext-json: *
- guzzlehttp/psr7: ^1.0|^2.0
This package is auto-updated.
Last update: 2024-09-18 08:29:26 UTC
README
为了注册新的授权客户端,需要在 local/php_interface/init.php 中写入以下代码:
use Bitrix\Main\EventManager; use Bx\OpenId\SocServOpenId; $eventManager = EventManager::getInstance(); $adfsSocService = SocServOpenId::createNewService( // динамическое создание клиента 'adfs', // идентификатор клиента авторизации 'ADFS (My company)', // название клиента выводимое в списке 'adfs-icon' // код класса для вывода иконки клиента в админке ); $adfsSocService::selfRegister($eventManager); // регистрация клиента авторизации
之后,可以在管理员面板(/bitrix/admin/settings.php?lang=ru&mid=socialservices&mid_menu=1)中配置授权客户端。
除了动态创建客户端外,还可以定义自己的类。
use Bx\OpenId\SocServOpenId; use Bx\OpenId\interfaces\SocServOpenIdHandlerInterface; class SocServAdfs extends SocServOpenId { private static ?SocServOpenIdHandlerInterface $handler = null; static public function getId(): string { return 'adfs'; } static public function getName(): string { return 'ADFS (My company)'; } static public function getIconCode(): string { return 'adfs-icon'; } static public function getHandler(): ?SocServOpenIdHandlerInterface { return static::$handler; } static public function setHandler(SocServOpenIdHandlerInterface $handler): void { static::$handler = $handler; } } // регистрация клента авторизации $eventManager = EventManager::getInstance(); SocServAdfs::selfRegister($eventManager);
如果需要,可以通过注入处理器来更改授权客户端的行为。
处理器描述示例
use Bx\OpenId\BaseSocServiceHandler; class CustomSocServiceHandler extends BaseSocServiceHandler { public function getAuthorizeCode(SocServOpenId $socServOpenId, ?HttpRequest $request = null): ?string { $request = $request ?? Context::getCurrent()->getRequest(); $code = $request->get('custom_code_field') ?: null; return $code === null ? null : (string) $code; } public function getIdToken(SocServOpenId $socServOpenId, ?HttpRequest $request = null): ?string { $request = $request ?? Context::getCurrent()->getRequest(); $code = $request->get('custom_id_token_field') ?: null; return $code === null ? null : (string) $code; } }
使用处理器注册授权客户端
$handler = new CustomSocServiceHandler(); SocServAdfs::setHandler($handler); $eventManager = EventManager::getInstance(); SocServAdfs::selfRegister($eventManager);