Начало разработки: Добавлена форма регистрации
This commit is contained in:
parent
00674234ec
commit
92176c6994
40
README.md
40
README.md
@ -1,7 +1,43 @@
|
||||
# pocketbase-signer
|
||||
|
||||
|
||||
# Pocketbase Signer 📜✨
|
||||
|
||||
## О проекте 🚧
|
||||
Этот проект находится **в стадии разработки** 🛠️. Он предназначен для хранения сертификатов пользователей, чтобы они могли подписывать документы 🖋️📄.
|
||||
|
||||
## Как начать 🏁
|
||||
1. **Склонируйте репозиторий** и перейдите в основную папку `pocketbase-signer`:
|
||||
|
||||
bash
|
||||
git clone <repository-url>
|
||||
cd pocketbase-signer
|
||||
|
||||
|
||||
2. **Запустите сервер Pocketbase** на порту `:8090` 🚀:
|
||||
|
||||
bash
|
||||
go run cmd/server/main.go serve
|
||||
|
||||
|
||||
3. **Запустите клиент** для взаимодействия с сервером на порту `:8080` 🌐:
|
||||
|
||||
bash
|
||||
go run cmd/client/main.go
|
||||
|
||||
|
||||
## Текущие возможности ✅
|
||||
- Клиент поддерживает форму регистрации, которая отправляет данные на сервер и сохраняет их 📝.
|
||||
- Протестировать можно по ссылке: [http://localhost:8080/register](http://localhost:8080/register) 🔗
|
||||
|
||||
## Что дальше? 🔮
|
||||
Продолжаем работать над функционалом для управления сертификатами и подписывания документов! 💪
|
||||
|
||||
---
|
||||
*Создано с ❤️ для безопасного подписывания документов.*
|
||||
|
||||
|
||||
```
|
||||
админская панель:
|
||||
- админская панель на сервере [http://localhost:8090/_/](http://localhost:8090/_/) 🔗
|
||||
login:"admin@admin.ru
|
||||
password:"0123456789"
|
||||
```
|
@ -5,17 +5,10 @@ import (
|
||||
"log"
|
||||
"net/http"
|
||||
"pocketbaseSigner/models"
|
||||
"encoding/json"
|
||||
"bytes"
|
||||
"io/ioutil"
|
||||
"encoding/json"
|
||||
)
|
||||
|
||||
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 {
|
||||
@ -31,63 +24,68 @@ func RegisterFormHandler(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
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"),
|
||||
PasswordConfirm: r.FormValue("password_confirm"),
|
||||
FirstName: r.FormValue("firstname"),
|
||||
LastName: r.FormValue("lastname"),
|
||||
Phone: r.FormValue("phone"),
|
||||
}
|
||||
|
||||
// нужно для маршалинга потому что переменные с маленькой буквы потеряются
|
||||
// если все переменные делать с большой буквы, то pocketbase не примет
|
||||
dataMap := map[string]string{
|
||||
"email": user.Email,
|
||||
"password": user.Password,
|
||||
"passwordConfirm": user.PasswordConfirm,
|
||||
"FirstName": user.FirstName,
|
||||
"LastName": user.LastName,
|
||||
"Phone": user.Phone,
|
||||
}
|
||||
|
||||
data, err := json.Marshal(dataMap)
|
||||
|
||||
|
||||
if r.FormValue("password") != r.FormValue("password_confirm") {
|
||||
http.Error(w, "Пароли не совпали", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
// Проверка
|
||||
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)
|
||||
fmt.Println(json.Marshal(user))
|
||||
fmt.Println()
|
||||
if err != nil {
|
||||
fmt.Println("Ошибка marshaling:", err)
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
|
||||
resp, err := http.Post(url, "application/json", bytes.NewBuffer(jsonData))
|
||||
url:= "http://localhost:8090/api/collections/users/records"
|
||||
fmt.Println(bytes.NewBuffer(data))
|
||||
req, err := http.NewRequest("POST", url, bytes.NewBuffer(data))
|
||||
if err != nil {
|
||||
fmt.Println("Ошибка запроса:", err)
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Println(bytes.NewBuffer(data))
|
||||
fmt.Println()
|
||||
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
|
||||
fmt.Println(req)
|
||||
client := &http.Client{}
|
||||
resp, err := client.Do(req)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
body, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
fmt.Println("Ошибка чтения ответа:", err)
|
||||
return
|
||||
http.Error(w, "Данные отправлены", http.StatusOK)
|
||||
}
|
||||
|
||||
// Проверка статуса
|
||||
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)
|
||||
}
|
@ -1,12 +1,12 @@
|
||||
package models
|
||||
|
||||
type UserForm struct {
|
||||
LastName string
|
||||
FirstName string
|
||||
Email string
|
||||
Password string
|
||||
PasswordConfirm string
|
||||
FirstName string
|
||||
LastName string
|
||||
Phone string
|
||||
Password_confirm string
|
||||
}
|
||||
|
||||
type UserResponse struct {
|
||||
|
Binary file not shown.
BIN
pb_data/data.db
BIN
pb_data/data.db
Binary file not shown.
Loading…
Reference in New Issue
Block a user