codewiser/uac-laravel

FC Zenit OAuth2.0 Client for Laravel

v1.2 2020-04-08 10:59 UTC

This package is auto-updated.

Last update: 2024-04-08 20:15:23 UTC


README

Пакет предоставляет разработчику middleware под названием auth.oauth, которым разработчик может закрыть все маршруты, где требуется авторизация пользователя. Авторизация пользователя происходит на OAuth сервере ФК Зенит.

Состав

Пакет содержит маршруты, их контроллеры и мидлварю.

Роуты

GET /oauth/callback

Адрес обратного вызова.

GET /oauth/logout

Адрес для деавторизации пользователя одновременно на сервере и на сайте. Разработчик должен использовать этот роут только в случае необходимости деавторизации именно на сервере.

GET /oauth

Сервисный роут, показывает информацию об авторизованном пользователе.

Настройка

OAUTH_CLIENT_ID=        // ClientId
OAUTH_CLIENT_SECRET=    // ClientSecret
OAUTH_SCOPES=           // Your application default scopes

Приложение, которое вы зарегистрируете на OAuth-сервере, будет иметь redirect_uri http(s)://example.com/oauth/callback.

Если модель пользователя в вашем приложении отличается от \App\User::class, то укажите правильную модель

USER_MODEL=\App\Models\User

Пропишите Codewiser\UAC\Laravel\ServiceProvider в config/app.php.

Переопределение

Пакет пытается авторизовать локального пользователя по совпадению email; если пользователя нет, то пакет добавляет его.

Если у вас в приложении реализована извращенная логика работы с пользователем, то вы можете переопредлить классы UacClient (вас интересует метод authorizeResourceOwner) и AuthenticateWithOauth, сделать свой middleware и использовать его.

Использование

С помощью предоставленного мидлваря можно закрыть один роут:

Route::get('/test')->middleware('auth.oauth');

Можно закрыть группу роутов:

Route::group(['middleware' => ['auth.oauth']], function() {
    Route::get('/test1');
    Route::get('/test2');
});

А можно вообще добавить этот мидлварь в группу web, тогда весь сайт будет закрыт от неавторизованного доступа.

protected $middlewareGroups = [
    'web' => [
        // ...
        \Codewiser\UAC\Laravel\AuthenticateWithOauth:class,
    ],
];

Ещё

Пакет наследует codewiser/uac, поэтому разработчикам доступны все способы получения access_token, и предоставляется удобный интерфейс доступа к api-ресурсам.