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

Перекладено ШІ 1 Laravel News 02 червня, 2026

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

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

Можливості

  • Інтеграція з Laravel Socialite
  • Попередньо налаштовані маршрути та контролери для роботи з PropelAuth Accounts, Organizations і Members
  • Контролер для обробки webhook-запитів від PropelAuth, який генерує події, на які можна підписатися в додатку.

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

Як і з іншими 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.

Популярні

Інше, що варто прочитати

15 Оновлено 01 червня, 2026

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

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

11 Оновлено 01 червня, 2026

Управління доступом у Filament за допомогою плагіна Shield

Дізнайтеся, як пакет Filament Shield забезпечує управління доступом до ваших панелей, ресурсів і віджетів у Laravel. Ця стаття розкриває основні можливості пакету, включаючи просту установку та підтримку багатокористувацьких середовищ — не пропустіть!

10 Оновлено 01 червня, 2026

Генерація документації в Laravel за допомогою штучного інтелекту

Docudoodle — це потужний пакет для генерації документації в Laravel, який допомагає легко аналізувати вашу кодову базу та створювати документацію за допомогою обраного вами AI. Чи готові ви дізнатися, як цей інструмент може спростити вашу роботу з документуванням коду? Читайте далі!