Безшовна інтеграція PropelAuth у Laravel за допомогою Earhart

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 02 січня, 2026
Потрібен простий спосіб додати OAuth‑автентифікацію в Laravel? PropelAuth у парі з пакетом Earhart інтегруються з Socialite, надають готові маршрути й вебхуки та спрощують роботу з обліковими записами й учасниками організацій.

Аутентифікація потрібна багатьом застосункам, і в Laravel є безліч готових рішень. Якщо шукаєте альтернативу — PropelAuth вартий уваги. Існує PropelAuth Socialite Provider, а розробник Elliot Ali створив пакет для Laravel під назвою Earhart, що ще більше спрощує інтеграцію.

Можливості

Короткий приклад

Як і з іншими Socialite-провайдерами, спочатку потрібно зареєструватися в PropelAuth і виконати базову конфігурацію. Зокрема, створити OAuth2-провайдера в PropelAuth та скопіювати Client ID і Client Secret. Дотримуйтесь інструкцій у PropelAuth документації для налаштування цього OAuth-провайдера.

Після цього додайте в файл .env такі змінні середовища з відповідними значеннями:

PROPELAUTH_CLIENT_ID="tbc"
PROPELAUTH_CLIENT_SECRET="tbc"
PROPELAUTH_CALLBACK_URL=https://localhost:8000/auth/callback
PROPELAUTH_AUTH_URL=https://0000000000.propelauthtest.com
PROPELAUTH_SVIX_SECRET="whsec_tbd"
PROPELAUTH_API_KEY="tbc"

У файлі config/services.php додайте:

'propelauth' => [
    'client_id' => env('PROPELAUTH_CLIENT_ID'),
    'client_secret' => env('PROPELAUTH_CLIENT_SECRET'),
    'redirect' => env('PROPELAUTH_CALLBACK_URL'),
    'auth_url' => env('PROPELAUTH_AUTH_URL'),
    'svix_secret' => env('PROPELAUTH_SVIX_SECRET'),
    'api_key' => env('PROPELAUTH_API_KEY'),
]

Після налаштування можна додати посилання для входу у Blade-шаблон, використавши маршрут auth.redirect. Він перенаправить користувачів на сторінку входу PropelAuth (яку можна налаштувати в PropelAuth Dashboard).

<a href="{{ route('auth.redirect') }}">Login</a>
Зразок сторінки входу PropelAuth
Зразок сторінки входу PropelAuth

Хоча пакет бере на себе частину шаблонного коду для інтеграції з PropelAuth, вам усе одно потрібно створити маршрут /auth/callback, який після успішного входу збереже користувача в базі вашого застосунку.

Маршрут може виглядати так:

Route::get('/auth/callback', function(Request $request) {
    $propelUser = Socialite::driver('propelauth')->user();
    $rawUser = $propelUser->getRaw();
 
    $user = User::updateOrCreate([
        'propel_id' => $propelUser->id,
    ], [
        'name' => $rawUser['first_name'] . ' ' . $rawUser['last_name'],
        'email' => $propelUser->email,
        'propel_access_token' => $propelUser->token,
        'propel_refresh_token' => $propelUser->refreshToken,
        'avatar' => $rawUser['picture_url'],
        'data' => json_encode($rawUser),
        'email_verified_at' => $rawUser['email_confirmed'] ? now() : null,
    ]);
 
    Auth::login($user);
 
    return redirect('/dashboard');
})->name('auth.callback');

У прикладі використано $propelUser->getRaw(). За замовчуванням Socialite-драйвер для PropelAuth повертає лише email, id та токени. Якщо потрібні додаткові дані про користувача (наприклад, щоб заповнити інші поля в базі), можна отримати сирий масив користувача.

Потрібно також додати маршрут /auth/logout, який інвалідує refresh_token, отриманий під час входу, і виконає вихід користувача:

Route::get('/auth/logout', function(Request $request){
 
    $response = Http::withHeaders([
        'Content-Type' => 'application/json',
    ])->post(config('services.propelauth.auth_url') . '/api/backend/v1/logout', [
        'refresh_token' => Auth::user()->propel_refresh_token,
    ]);
 
    if ($response->failed()) {
        Log::debug('Failed to log out from PropelAuth', ['response' => $response->body()]);
    }
 
    Auth::logout();
 
    return redirect('/');
})->name('auth.logout');

Так само додайте в Blade-шаблон посилання для виходу:

<a href="{{ route('auth.logout') }}">Logout</a>

Детальніше про пакет (включно з іншими маршрутами та подіями) та вихідний код дивіться на GitHub.

Популярні

Logomark Logotype

Журнал аудиту в Laravel

Хочете забезпечити повну прозорість у своїх Laravel-додатках? Пакет Laravel Audit Log допоможе вам детально відстежувати всі зміни моделей Eloquent та відповідати вимогам регуляторів. Читайте далі, щоб дізнатися, як цей потужний інструмент може підвищити надійність вашого проєкту

Logomark Logotype

Простий пакет RabbitMQ для Laravel

Вам цікаво дізнатися, як спростити інтеграцію RabbitMQ у вашому Laravel-додатку? У нашій статті ми розглянемо пакет Simple RabbitMQ, який дозволяє легко налаштувати багатозʼєднання, публікувати повідомлення та обробляти черги за допомогою простого синтаксису. Читайте далі, щоб дізнатися більше!

Logomark Logotype

Laravel Boost — ваш стартовий набір для програмування з використанням штучного інтелекту

Вперше у світі Laravel з'являється можливість, яка значно спростить ваше повсякденне програмування завдяки новому пакету Laravel Boost. Читайте статтю, щоб дізнатися, як посилена інтеграція штучного інтелекту може підвищити ефективність вашої роботи та оптимізувати створення проектів у Laravel