Laravel Bastion — пакет для автентифікації API, натхнений Stripe

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 09 грудня, 2025
Відкрийте для себе Laravel Bastion – пакет для аутентифікації API, натхнений Stripe, який забезпечує ізоляцію середовищ, тонке управління правами доступу та вбудовану безпеку. Якщо ви хочете дізнатися більше про його функції та переваги, читайте далі

Laravel Bastion — це пакет для аутентифікації API, натхненний Stripe, розроблений Стівом МакДугаллом. Він пропонує ізоляцію середовища, гранульовані області доступу, вбудовану безпеку та багато іншого.

# Особливості

Після встановлення пакету, додайте HasBastionTokens трейт до вашої моделі User:

use JustSteveKing\Bastion\Concerns\HasBastionTokens;

class User extends Authenticatable
{
    use HasBastionTokens;

    // ...
}

Для генерації токена скористайтеся:

use JustSteveKing\Bastion\Enums\TokenEnvironment;
use JustSteveKing\Bastion\Enums\TokenType;

$result = $user->createBastionToken(
    name: 'LN API Key',
    scopes: ['posts:read', 'posts:write'],
    environment: TokenEnvironment::Test,
    type: TokenType::Restricted,
);

$token = $result['plainTextToken'];
// Приклад: app_test_rk_a8Kx7mN2pQ4vW9yB1cD3eF5gH6jK8lM

echo "Token: " . $token;

Для захисту ваших маршрутів Bastion надає middleware AuthenticateToken:

use JustSteveKing\Bastion\Http\Middleware\AuthenticateToken;

Route::middleware(AuthenticateToken::class)->group(function () {
    Route::get('/api/posts', [PostController::class, 'index']);
});

При надсиланні запитів до захищених кінцевих точок передавайте токен у заголовку Authorization за схемою Bearer:

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://example.com/api']);
$token = 'YOUR_BEARER_TOKEN';

$response = $client->request('GET', '/posts', [
        'headers' => [
                'Authorization' => 'Bearer ' . $token,
                'Accept' => 'application/json',
        ],
]);

Якщо вам потрібно також оновити токени, Bastion має цю можливість. Використовуйте метод rotate():

$result = $token->rotate();

Є навіть можливість використовувати CLI:

php artisan bastion:rotate {token-id}

Говорячи про CLI, Bastion дозволяє управляти токенами за допомогою різних команд Artisan:

# Генерація токенів
php artisan bastion:generate {user-id} "LN App Token" \
    --environment=test \
    --type=restricted \
    --scopes=posts:read --scopes=posts:write

# Відкликання токенів
php artisan bastion:revoke {token-id} --reason="Token no longer used"

# Очищення прострочених токенів
php artisan bastion:prune-tokens --expired

# та інше...

Стів підготував зручний пакет з гарним набором функцій. Щоб дізнатися більше про Bastion, його можливості і переглянути вихідний код, відвідайте репозиторій на GitHub