# Исправление ошибки 405 при авторизации broadcasting

## Проблема

Ошибка: `subscription_error", "private-admin-orders", 405`

Это означает, что маршрут `/api/broadcasting/auth` не найден или не принимает POST запросы.

## Решение

### 1. Маршрут добавлен в `routes/api.php`

```php
// Broadcasting авторизация для приватных каналов
Route::post('/broadcasting/auth', function (Request $request) {
    try {
        // Проверяем, что пользователь авторизован
        if (!$request->user()) {
            return response()->json(['message' => 'Unauthenticated'], 401);
        }
        
        // Используем Broadcast::auth для авторизации канала
        return Broadcast::auth($request);
    } catch (\Exception $e) {
        \Log::error('Broadcasting auth error', [
            'error' => $e->getMessage(),
            'trace' => $e->getTraceAsString(),
        ]);
        return response()->json(['message' => 'Authorization failed'], 403);
    }
})->middleware(['auth:sanctum']);
```

### 2. Обновлен `BroadcastServiceProvider`

Убрана автоматическая регистрация маршрутов, так как они теперь регистрируются вручную в `routes/api.php`.

## Проверка

### 1. Очистите кэш маршрутов:

```bash
php artisan route:clear
php artisan route:cache
```

### 2. Проверьте, что маршрут зарегистрирован:

```bash
php artisan route:list --path=broadcasting
```

Должен появиться:
```
POST  api/broadcasting/auth  ...  Closure
```

### 3. Проверьте авторизацию в браузере:

1. Откройте админ-панель
2. Откройте Network tab в DevTools
3. Найдите запрос к `/api/broadcasting/auth`
4. Должен быть статус 200
5. Должен вернуть JSON с `auth` ключом

### 4. Проверьте консоль браузера:

Должно появиться:
- `🔌 Socket.io connected`
- `✅ Successfully subscribed to admin-orders channel`
- НЕ должно быть ошибки `subscription_error`

## Если ошибка сохраняется

### Проверьте логи Laravel:

```bash
tail -f storage/logs/laravel.log | grep -i "broadcasting\|auth"
```

### Проверьте права доступа пользователя:

Убедитесь, что пользователь имеет роль `admin` или `manager`:

```php
// В routes/channels.php
Broadcast::channel('admin-orders', function ($user) {
    return $user->hasAnyRole(['admin', 'manager']);
});
```

### Тестовая проверка маршрута:

```bash
curl -X POST https://kartulirest.de/api/broadcasting/auth \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"socket_id":"test","channel_name":"private-admin-orders"}'
```

Должен вернуть JSON с `auth` ключом.
