# Yönetim paneli — Laravel Sanctum

React (Vite) yönetim paneli, API üzerinden **Bearer token** ile kimlik doğrular. Oturum çerezi değil; `personal_access_tokens` tablosunda saklanan Sanctum token kullanılır.

## Kurulum

```bash
cd backend
composer install
cp .env.example .env   # gerekirse
php artisan key:generate
php artisan migrate
php artisan db:seed    # ADMIN_EMAIL / ADMIN_PASSWORD ile yönetici
```

`.env` örnekleri:

| Değişken | Açıklama |
|----------|----------|
| `SANCTUM_TOKEN_EXPIRATION` | Token geçerlilik süresi (dakika). Varsayılan: **480** (8 saat). |
| `SANCTUM_STATEFUL_DOMAINS` | SPA cookie auth için (ileride); virgülle ayrılmış hostlar. |
| `FRONTEND_URL` | GET `/api/admin/login` → SPA giriş yönlendirmesi |

## API uçları

| Metot | Yol | Koruma |
|-------|-----|--------|
| POST | `/api/admin/login` | Throttle |
| GET | `/api/admin/me` | `auth:sanctum` + `ability:admin` |
| POST | `/api/admin/logout` | Aynı |
| GET | `/api/admin/dashboard` | Aynı |

Giriş yanıtı: `{ token, token_type: "Bearer", expires_at, user }`

React tarafı `expires_at` değerini saklar; süre dolunca veya ana sayfadan tekrar `/yonetim/...` açıldığında otomatik giriş sayfasına yönlendirilir.

İstek başlığı: `Authorization: Bearer <token>`

## Mimari

- `User` → `HasApiTokens`
- `App\Support\AdminAuth` → token adı (`admin-panel`) ve yetenek (`admin`)
- `LoginRequest` → giriş doğrulama
- Korunan rotalar → `auth:sanctum` + `ability:admin`

Yeni girişte aynı kullanıcının önceki `admin-panel` tokenları silinir (tek aktif oturum).

## Test

```bash
php artisan test --filter=AdminSanctumAuthTest
```
