package handlers import ( "fmt" "log" "net/http" "pocketbaseSigner/models" "encoding/json" "bytes" "io/ioutil" ) type UserResponse struct { ID string `json:"id"` Email string `json:"email"` FirstName string `json:"first_name"` LastName string `json:"last_name"` } func RegisterFormHandler(w http.ResponseWriter, r *http.Request) { if r.Method == http.MethodGet { http.ServeFile(w, r, "./web/register_form.html") return } if r.Method == http.MethodPost { err := r.ParseForm() if err != nil { http.Error(w, "Ошибка при обработке формы", http.StatusBadRequest) return } user := models.UserForm{ LastName: r.FormValue("lastname"), FirstName: r.FormValue("firstname"), Phone: r.FormValue("phone"), Email: r.FormValue("email"), Password: r.FormValue("password"), Password_confirm: r.FormValue("password_confirm"), } // Проверка if user.Email == "" || user.Password == "" { http.Error(w, "Email и пароль обязательны!", http.StatusBadRequest) return } if user.Password != user.Password_confirm { http.Error(w, "Пароли не совпали", http.StatusBadRequest) return } log.Printf("Получен пользователь: %+v\n", user) url:= "http://localhost:8090/api/collections/users/records" jsonData, err := json.Marshal(user) if err != nil { fmt.Println("Ошибка marshaling:", err) return } resp, err := http.Post(url, "application/json", bytes.NewBuffer(jsonData)) if err != nil { fmt.Println("Ошибка запроса:", err) return } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println("Ошибка чтения ответа:", err) return } // Проверка статуса if resp.StatusCode != http.StatusOK { fmt.Printf("Ошибка: %d, %s\n", resp.StatusCode, string(body)) return } // Парсинг ответа var userResponse UserResponse if err := json.Unmarshal(body, &userResponse); err != nil { fmt.Println("Ошибка парсинга ответа:", err) return } fmt.Printf("Пользователь создан: ID=%s, Email=%s, Имя=%s\n", userResponse.ID, userResponse.Email, userResponse.FirstName) } http.Error(w, "Метод не поддерживается", http.StatusMethodNotAllowed) }