beta/bx.openid

Bitrix openid 客户端

安装: 139

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 1

开放问题: 1

类型:bitrix-module

1.0.0 2024-06-18 07:56 UTC

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)中配置授权客户端。

image info image info

除了动态创建客户端外,还可以定义自己的类。

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);