modified: main_dc/yalarba/api_yal/go.sum
renamed: main_dc/yalarba/api_yal/internal/dto/account_dto.go -> main_dc/yalarba/api_yal/internal/domain/auth/dto.go new file: main_dc/yalarba/api_yal/internal/domain/auth/handler.go new file: main_dc/yalarba/api_yal/internal/domain/auth/servcie.go new file: main_dc/yalarba/api_yal/internal/domain/auth/servcie_impl.go modified: main_dc/yalarba/api_yal/internal/handlers/allHandlers.go modified: main_dc/yalarba/api_yal/internal/handlers/auth.go reimplement arch to ddd + layered structure
This commit is contained in:
@@ -41,6 +41,7 @@ golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU=
|
|||||||
golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0=
|
golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0=
|
||||||
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
|
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
|
||||||
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
|
golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
|
||||||
golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
|
golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
|
||||||
golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk=
|
golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk=
|
||||||
golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
|
golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package dto
|
package auth
|
||||||
|
|
||||||
import ()
|
import ()
|
||||||
|
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
package auth
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"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 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
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
package auth
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
package auth
|
||||||
@@ -1,17 +1,17 @@
|
|||||||
package handlers
|
package handlers
|
||||||
|
|
||||||
import ()
|
import "api_yal/internal/service"
|
||||||
|
|
||||||
type AllHandler struct {
|
type AllHandler struct {
|
||||||
authHandler *AuthHandler
|
authHandler *AuthHandler
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewAllHandler() *AllHandler {
|
func NewAllHandler(accountHandler AccountHandler) *AllHandler {
|
||||||
return &AllHandler{
|
return &AllHandler{
|
||||||
authHandler: NewAuthHandler(),
|
authHandler: NewAuthHandler(service.AccountService),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *AllHandler) AuthHandler() *AuthHandler {
|
func (h *AllHandler) AccountHandler() AccountHandler {
|
||||||
return h.authHandler
|
return h.accountHandler
|
||||||
}
|
}
|
||||||
@@ -1,59 +1,2 @@
|
|||||||
package handlers
|
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
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user