package handlers import ( "encoding/json" "io" "log" "net/http" "pocketbaseSigner/models" ) func DashboardHandler(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodGet { http.Error(w, "Метод не поддерживается", http.StatusMethodNotAllowed) return } // Получаем токен из cookie cookie, err := r.Cookie("pb_auth") if err != nil { http.Redirect(w, r, "/login", http.StatusSeeOther) return } // Получаем ID пользователя из cookie userIdCookie, err := r.Cookie("user_id") if err != nil { log.Printf("Ошибка при получении ID пользователя: %v", err) http.Redirect(w, r, "/login", http.StatusSeeOther) return } // Получаем данные пользователя url := "http://localhost:8090/api/collections/users/records/" + userIdCookie.Value req, err := http.NewRequest("GET", url, 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() body, err := io.ReadAll(resp.Body) if err != nil { log.Printf("Ошибка при чтении ответа: %v", err) http.Error(w, "Ошибка при обработке данных", http.StatusInternalServerError) return } // Проверяем статус ответа if resp.StatusCode != http.StatusOK { log.Printf("Ошибка при получении данных пользователя: %s", string(body)) http.Error(w, "Ошибка при получении данных пользователя", resp.StatusCode) return } var userData models.UserData if err := json.Unmarshal(body, &userData); err != nil { log.Printf("Ошибка при разборе JSON: %v", err) http.Error(w, "Ошибка при обработке данных", http.StatusInternalServerError) return } // Отображаем dashboard w.Header().Set("Content-Type", "text/html") dashboardHTML := `