定制 uzairports/uzair-id 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-05-22