package handlers import ( "log" "net/http" ) func AuthMiddleware(next http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { // Получаем токен из cookie cookie, err := r.Cookie("pb_auth") if err != nil { // Если токена нет, перенаправляем на страницу логина http.Redirect(w, r, "/login", http.StatusSeeOther) return } // Проверяем валидность токена через PocketBase req, err := http.NewRequest("POST", "http://localhost:8090/api/collections/users/auth-refresh", nil) if err != nil { log.Printf("Ошибка при создании запроса: %v", err) http.Error(w, "Внутренняя ошибка сервера", http.StatusInternalServerError) return } req.Header.Set("Authorization", cookie.Value) client := &http.Client{} resp, err := client.Do(req) if err != nil { log.Printf("Ошибка при проверке токена: %v", err) http.Error(w, "Ошибка при проверке авторизации", http.StatusInternalServerError) return } defer resp.Body.Close() // Если токен невалиден, перенаправляем на страницу логина if resp.StatusCode != http.StatusOK { http.Redirect(w, r, "/login", http.StatusSeeOther) return } // Если токен валиден, продолжаем выполнение next.ServeHTTP(w, r) } }