Створіть готові до виробництва API в Laravel за допомогою Tyro

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 28 листопада, 2025
Хочете швидко створити безпечні API на Laravel? Ознайомтеся з пакетом Tyro, який пропонує просту установку та потужні можливості для управління ролями і привілеями!

Tyro — це пакет API для створення готових до використання API в Laravel. Він має нульову конфігурацію з автентифікацією, авторизацією, управлінням привілеями, більше ніж 40 командами Artisan та перевіреною безпекою. Завдяки цьому пакету ви можете швидко розробляти безпечні API в Laravel.

Користуючись вбудованими ролями та привілеями Tyro, ви можете захистити маршрути за допомогою медіаторів roles, privilege та privileges:

use Illuminate\Support\Facades\Route;
 
// Потрібна автентифікація
Route::middleware(['auth:sanctum'])
    ->get('/profile', ProfileController::class);
 
// Потрібна конкретна роль
Route::middleware(['auth:sanctum', 'role:admin'])
    ->get('/admin/dashboard', AdminDashboardController::class);
 
// Дозволити будь-яку з кількох ролей
Route::middleware(['auth:sanctum', 'roles:admin,editor'])
    ->post('/articles', ArticleController::class);
 
// Потрібне конкретне привілеї
Route::middleware(['auth:sanctum', 'privilege:reports.run'])
    ->get('/reports', ReportController::class);
 
// Дозволити будь-яке з кількох привілеїв
Route::middleware(['auth:sanctum', 'privileges:billing.view,reports.run'])
    ->get('/analytics', AnalyticsController::class);

Також ви можете захищати API-маршрути, поєднуючи ролі та привілеї, що називається abilities:

// Потрібні ВСІ можливості (ролі та/або привілеї)
Route::middleware(['auth:sanctum', 'ability:admin,reports.run'])
    ->post('/reports/export', ReportExportController::class);
 
// Дозволити БУДЬ-ЯКУ можливість
Route::middleware(['auth:sanctum', 'abilities:admin,super-admin,reports.run'])
    ->get('/reports/advanced', AdvancedReportController::class);

Ось приклад входу в систему та отримання API-токена одразу після установки Tyro:

curl -X POST http://tyro-demo.test/api/login \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"email":"admin@tyro.project","password":"tyro"}'
{
    "error": 0,
    "id": 1,
    "name": "Tyro Admin",
    "token": "1|mNYqXI9AfPZw1bppwc3WK1F8WSHNAOnAYqV8RR0Oaa1644f7"
}
 
# Використання токена
curl http://tyro-demo.test/api/me \
  -H "Authorization: Bearer 1|mNYqXI9AfPZw1bppwc3WK1F8WSHNAOnAYqV8RR0Oaa1644f7"
{
    "id": 1,
    "name": "Tyro Admin",
    "email": "admin@tyro.project",
    "email_verified_at": null,
    "created_at": "2025-11-27T02:46:33.000000Z",
    "updated_at": "2025-11-27T02:46:33.000000Z",
    "suspended_at": null,
    "suspension_reason": null
}

# Основні функції

👨‍💻 Код доступний на GitHub: hasinhayder/tyro