From 68577d1878bc5228db2eabfa6f5f75d5197c3fd9 Mon Sep 17 00:00:00 2001 From: madipo2611 Date: Mon, 11 Aug 2025 16:09:03 +0300 Subject: [PATCH] =?UTF-8?q?v0.0.17.3=20=D0=9F=D0=B5=D1=80=D0=B5=D1=80?= =?UTF-8?q?=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=BD=20websocket,=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B0=20ping/pong?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/http/handlers/chat.go | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/internal/http/handlers/chat.go b/internal/http/handlers/chat.go index 05fbf67..8857526 100644 --- a/internal/http/handlers/chat.go +++ b/internal/http/handlers/chat.go @@ -54,23 +54,30 @@ func (h *ChatHandler) HandleWebSocket(w http.ResponseWriter, r *http.Request) { log.Printf("WebSocket: токен из куки: %s", token) } - // 2. Если нет в куках, проверяем заголовок Authorization + // Из заголовка Authorization + if authHeader := r.Header.Get("Authorization"); authHeader != "" { + token = strings.TrimPrefix(authHeader, "Bearer ") + } + + // Из параметра URL if token == "" { - authHeader := r.Header.Get("Authorization") - if authHeader != "" { - token = strings.TrimPrefix(authHeader, "Bearer ") - log.Printf("WebSocket: токен из заголовка: %s", token) + token = r.URL.Query().Get("token") + } + + // Из куков + if token == "" { + if cookie, err := r.Cookie("accessToken"); err == nil { + token = cookie.Value } } - // 3. Если токен не найден - возвращаем 401 if token == "" { - log.Println("WebSocket: токен не найден ни в куках, ни в заголовках") + log.Println("WebSocket: токен не найден") http.Error(w, "Token is required", http.StatusUnauthorized) return } - // 4. Валидация токена + // Валидация токена userID, err := h.tokenAuth.ValidateAccessToken(token) if err != nil { log.Printf("WebSocket: ошибка валидации токена: %v", err)