94 lines
2.7 KiB
Go
94 lines
2.7 KiB
Go
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)
|
|
}
|