uzairports/uzair-id
最新稳定版本:1.0.8
Composer 安装命令:
composer require uzairports/uzair-id
包简介
OAuth 2.0 Integration with Uzbekistan Airports Single Sign-On System for Laravel
README 文档
README
OAuth 2.0 интеграция с системой единой аутентификации Uzbekistan Airports.
Позволяет авторизовать пользователей через UzAirports ID, автоматически создавать аккаунты, управлять токенами и выполнять безопасный logout.
Установка
composer require uzairports/uzair-id
Опубликуйте конфигурацию и миграции:
php artisan vendor:publish --provider=Uzairports\Uzairid\Providers\UzairServiceProvider
php artisan migrate
Конфигурация
Добавьте настройки в config/services.php:
'uzairports' => [ 'client_id' => env('UZAIR_CLIENT_ID'), 'client_secret' => env('UZAIR_CLIENT_SECRET'), 'redirect' => env('UZAIR_CALLBACK_URL'), ],
И в .env:
UZAIR_CLIENT_ID=your-client-id UZAIR_CLIENT_SECRET=your-client-secret UZAIR_CALLBACK_URL=https://your-app.com/auth/callback
Для получения доступа к UzAirports ID, пожалуйста, свяжитесь с технической поддержкой: it@uzairports.com
Аутентификация
Маршруты
Добавьте в routes/web.php:
Route::get('/auth/redirect', [App\Http\Controllers\OAuthController::class, 'redirect'])->name('login'); Route::get('/auth/callback', [App\Http\Controllers\OAuthController::class, 'callback'])->name('callback'); Route::post('/auth/logout', [App\Http\Controllers\OAuthController::class, 'logout'])->name('logout');
Контроллер
Создайте OAuthController.php:
<?php namespace App\Http\Controllers; use App\Models\User; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Http; use Laravel\Socialite\Facades\Socialite; class OAuthController extends Controller { public function redirect() { return Socialite::driver('uzairports')->redirect(); } public function callback() { try{ $uzairUser = Socialite::driver('uzairports')->user(); } catch(\Exception $e){ return redirect('/'); } $user = User::query() ->firstOrCreate( ['email' => $uzairUser->getEmail()], [ 'email' => $uzairUser->getEmail(), 'name' => $uzairUser->getName(), ] ); auth()->login($user); auth()->user()->token()->delete(); auth()->user()->token()->create([ 'access_token' => $uzairUser->token, 'refresh_token' => $uzairUser->refreshToken, 'expires_in' => $uzairUser->expiresIn, ]); return redirect('/dashboard'); } public function logout(Request $request) { if (auth()->user()->token) { Http::withHeaders([ "Accept" => "application/json", "Authorization" => "Bearer " . auth()->user()->token->access_token, ])->post('https://my.uzairports.com/api/v1/oauth/logout'); auth()->user()->token()->delete(); } Auth::logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return $request->wantsJson() ? new JsonResponse([], 204) : redirect('/'); } }
Модель пользователя
Добавьте в User.php:
public function token() { return $this->hasOne(OauthToken::class); }
Лицензия
Этот пакет распространяется под лицензией MIT.
Copyright (c) 2025 JSC "Uzbekistan Airports"
См. файл LICENSE для подробностей.
统计信息
- 总下载量: 76
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-05-22