Celebron Social Extension for Yii 2
This extension provides the HTTP client for the Yii framework 2.0.
Installation
composer require celebron/yii2-oauth2-social
Configuration
Файл frontend/config/main.php
, пример:
...,
'bootstrap' => [..., 'social' ],
'components'=>[
'user' => [
'identityClass' => \common\models\User::class,
...
],
'social' => [
'class' => Celebron\socialSource\Configuration::class,
'socials' => [
[
'class' => Yandex::class, //Google::class и т.д.
'active' => true,
'clientId' => '...',
'clientSecret' => '...,
],
...
],
],
],
...
Необходимо:
- подключить компонент
Configuration::class
вbootstrap
, как приведено в примере; - в компоненте
social
установить переменную$socials
список всех соц. сетей по правиламYii::createObject()
; - реализовать интерфейс
SocialUserInterface
иIdentityInterface
и подключить к компонентуuser
;- подключить трейт
UserManagementTrait
(по необходимости).
- подключить трейт
Configuration::class
[optional] string $route ('social') - роут для OAuth redirect path
[optional] string|null $paramsGroup (null) - ключ массива с настройками в \Yii::$app->params (null - не использовать)
[optional] array $socialEvents - массив событий ['название-события' => \Closure]
[required] Social[] $socials - список всех соц. сетей (Правило формирования \Yii::createObject())
[optional] \Closure|null $paramsHandler - настройка $params в Social классах
- В массиве
$socials
ключ можно опускать, тогда при регистрации ключом будет имя класса. - Если класс реализует интерфейс
CustomRequestInterface
, то ключ обязателен (выдаст исключение) - Если
$paramsGroup
установлен, то настройкиclientId
иclientSecret
могут браться из \Yii::$app->params[$paramsGroup][{socialName}] - Если
$paramsHandler
установлен, то настройкиclientId
иclientSecret
могут браться из callback-function
function($socialName):array { /** @var Configure $this */ }
Классы авторизации
OAuth2::class (Google::class, Yandex::class, ...)
namespace Celebron\socials
[optional] bool $activate (false) - активировать механизм
[optional] string $name - название для Widget
[optional] string $icon - иконка для Widget
[optional] bool $visible - отображение для Widget
[required|optional] $clientId (null) - OAuth clientId
[required|optional] $clientSecret (null) - OAuth clientSecret
Если $clientId
и $clientSecret
не определены, то будут использоваться параметры
$params['clientId']
и $params['clientSecret']
соответственно, в противном случае будет вызвано исключение.
Зависит от настроек Configure::$paramsGroup
и Configure::$paramsHandler
Ссылка redirect в консолях соц. сетей (oauth2 и прочее)
https://сайт.ru/{route}/{social}
Легенда
{social} - название социальной сети (google, yandex и т.п.). Индекс массива Сonfigutation::$socials.
{route} - Настройка в классе Configuration