Files
tp/main_dc/yalarba/api_yal/internal/handlers/auth.go
T
valitovgaziz c0dbfd02b8 modified: main_dc/yalarba/api_yal/go.mod
modified:   main_dc/yalarba/api_yal/go.sum
	new file:   main_dc/yalarba/api_yal/internal/dto/account_dto.go
	new file:   main_dc/yalarba/api_yal/internal/handlers/account.go
	modified:   main_dc/yalarba/api_yal/internal/handlers/auth.go
	modified:   main_dc/yalarba/api_yal/internal/router/router.go
	new file:   main_dc/yalarba/api_yal/internal/service/account_service.go
add some auth functions into api_yal
2026-03-04 14:12:35 +05:00

59 lines
1.4 KiB
Go

package handlers
import (
"encoding/json"
"errors"
"net/http"
"api_yal/internal/dto"
"api_yal/internal/service"
"github.com/go-playground/validator/v10"
)
// AuthHandler обработчик для аутентификации
type AuthHandler struct {
accountService service.AccountService
validator *validator.Validate
}
// NewAuthHandler создает новый экземпляр AuthHandler
func NewAuthHandler(accountService service.AccountService) *AuthHandler {
return &AuthHandler{
accountService: accountService,
validator: validator.New(),
}
}
// Register регистрация аккаунта пользователя
func (h *AuthHandler) Register(w http.ResponseWriter, r *http.Request) {
var req dto.RegisterRequest
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
http.Error(w, "Invalid request body", http.StatusBadRequest)
return
}
if err := h.validator.Struct(req); err != nil {
var invalidValidationError *validator.InvalidValidationError
if errors.As(err, &invalidValidationError) {
http.Error(w, "Invalid request", http.StatusBadRequest)
return
}
var errs []string
for _, err := range err.(validator.ValidationErrors) {
errs = append(errs, fmt.Sprintf("field %s is invalid: %s", err.Field(), err.Tag()))
}
w.WriteHeader(http.StatusBadRequest)
json.NewEncoder(w).Encode(map[string]interface{}{
"error": "Validation failed",
"fields": errs,
})
return
}
}