PHPackages                             heggi/yii2-esia - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. heggi/yii2-esia

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

heggi/yii2-esia
===============

ESIA Authclient for gosuslugi.ru

v0.2(8y ago)38.6k1[1 PRs](https://github.com/heggi/yii2esia/pulls)MITPHP

Since Jan 27Pushed 7y ago2 watchersCompare

[ Source](https://github.com/heggi/yii2esia)[ Packagist](https://packagist.org/packages/heggi/yii2-esia)[ RSS](/packages/heggi-yii2-esia/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependencies (2)Versions (2)Used By (0)

ESIA Authclient
===============

[](#esia-authclient)

Расширение для Yii2 для авторизации через портал госуслуг. Реализована только авторизация и получение базовых данных (personInfo)

Установка
---------

[](#установка)

Запустить

```
php composer.phar require --prefer-dist heggi/yii2-esia "*"

```

Или добавить

```
"heggi/yii2-esia": "*"

```

в секцию require вашего файла `composer.json`.

Настройка
---------

[](#настройка)

В файле конфигурации (frontend/config/main.php или config/web.php) добавить

```
return [
    'components' => [
        ...
        'authClientCollection' => [
            'class' => 'yii\authclient\Collection',
            'clients' => [
                ...
                'esia' => [
                    'class' => 'heggi\yii2esia\Esia',
                    'clientId' => 'xxx',
                    'certPath' => __DIR__ . '/xxx.pem',
                    'privateKeyPath' => __DIR__ . '/xxx.key',
                    'privateKeyPassword' => 'xxx',
                    'scope' => 'fullname',
                    'production' => false,
                ],
                ...
            ],
        ],
        ...
    ]
]

```

Указать верные clientId, certPath, privateKeyPath, privateKeyPassword.

`'production' => false` для подключения к тестовой среде ESIA.

В контроллере SiteController.php

```
public function actions() {
    return [
        ...
        'auth' => [
            'class' => 'yii\authclient\AuthAction',
            'successCallback' => [$this, 'ssoCallback'],
        ],
        ...
    ];
}

public function ssoCallback($client) {
    $attributes = $client->getUserAttributes();
    $oid = $attributes['oid'];

    $user = User::findByOid($oid);
    if($user) {
        return Yii::$app->user->login($user);
    }

    $personInfo = $client->getPersonInfo($oid);
    $user = new User();
    $user->oid = $oid;
    $user->first_name = $personInfo['firstName'];
    $user->last_name = $personInfo['lastName'];
    $user->middle_name = $personInfo['middleName'];
    if(!$user->save()) {
        throw new yii\web\ServerErrorHttpException('Внутренняя ошибка сервера');
    }

    Yii::$app->user->login($user);
}
```

В файл views/layouts/main.php добавить ссылку для авторизации

```
