beta / bx.openid
Bitrix openid client
Installs: 291
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 1
Open Issues: 1
Type:bitrix-module
Requires
- php: >=7.4
- ext-json: *
- guzzlehttp/psr7: ^1.0|^2.0
This package is auto-updated.
Last update: 2025-02-27 12:26:15 UTC
README
Установка
composer require beta/bx.openid
Для регистрации нового клиента авторизации необходимо в 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);