On branch main

modified:   main_dc/yalarba/api_yal/internal/domain/account/dto.go
	new file:   main_dc/yalarba/api_yal/internal/domain/account/errors.go
	modified:   main_dc/yalarba/api_yal/internal/domain/account/handler.go
	modified:   main_dc/yalarba/api_yal/internal/domain/account/router.go
	modified:   main_dc/yalarba/api_yal/internal/domain/account/service.go
	new file:   main_dc/yalarba/api_yal/internal/domain/account/types.go
	new file:   main_dc/yalarba/api_yal/internal/middleware/admin.go
	modified:   main_dc/yalarba/api_yal/internal/middleware/auth.go
	new file:   main_dc/yalarba/api_yal/internal/middleware/context.go
	new file:   main_dc/yalarba/api_yal/internal/middleware/logging.go
	modified:   main_dc/yalarba/api_yal/internal/router/router.go
last but not yet commit
This commit is contained in:
2026-03-31 09:43:18 +05:00
parent f304f982c0
commit 75b2f3f6b2
11 changed files with 1384 additions and 109 deletions
@@ -9,11 +9,11 @@ import (
// CreateAccountRequest - DTO для создания нового аккаунта
type CreateAccountRequest struct {
Email string `json:"email" binding:"required,email"`
Password string `json:"password" binding:"required,min=6"`
FullName string `json:"full_name" binding:"required"`
FirstName string `json:"first_name" binding:"required"`
LastName string `json:"last_name" binding:"required"`
Email string `json:"email" validate:"required,email"`
Password string `json:"password" validate:"required,min=6"`
FullName string `json:"full_name" validate:"required"`
FirstName string `json:"first_name" validate:"required"`
LastName string `json:"last_name" validate:"required"`
Phone string `json:"phone"`
City string `json:"city"`
@@ -43,19 +43,19 @@ type UpdateAccountRequest struct {
// ChangePasswordRequest - DTO для смены пароля
type ChangePasswordRequest struct {
CurrentPassword string `json:"current_password" binding:"required"`
NewPassword string `json:"new_password" binding:"required,min=6"`
CurrentPassword string `json:"current_password" validate:"required"`
NewPassword string `json:"new_password" validate:"required,min=6"`
}
// ForgotPasswordRequest - DTO для запроса сброса пароля
type ForgotPasswordRequest struct {
Email string `json:"email" binding:"required,email"`
Email string `json:"email" validate:"required,email"`
}
// ResetPasswordRequest - DTO для сброса пароля по токену
type ResetPasswordRequest struct {
Token string `json:"token" binding:"required"`
NewPassword string `json:"new_password" binding:"required,min=6"`
Token string `json:"token" validate:"required"`
NewPassword string `json:"new_password" validate:"required,min=6"`
}
// VerifyAccountRequest - DTO для верификации аккаунта (админ)
@@ -66,15 +66,15 @@ type VerifyAccountRequest struct {
// UpdateAccountStatusRequest - DTO для изменения статуса аккаунта (админ)
type UpdateAccountStatusRequest struct {
IsActive bool `json:"is_active"`
Role string `json:"role" binding:"omitempty,oneof=user admin moderator"`
Role string `json:"role" validate:"omitempty,oneof=user admin moderator"`
}
// ListAccountsRequest - DTO для фильтрации списка аккаунтов
type ListAccountsRequest struct {
Page int `form:"page" binding:"min=1"`
PageSize int `form:"page_size" binding:"min=1,max=100"`
Page int `form:"page" validate:"min=1"`
PageSize int `form:"page_size" validate:"min=1,max=100"`
Search string `form:"search"`
Role string `form:"role" binding:"omitempty,oneof=user admin moderator"`
Role string `form:"role" validate:"omitempty,oneof=user admin moderator"`
IsActive *bool `form:"is_active"`
}
@@ -140,19 +140,19 @@ type AccountProfileResponse struct {
// AccountStats - статистика аккаунта
type AccountStats struct {
ObjectsCount int `json:"objects_count"`
FeedbacksCount int `json:"feedbacks_count"`
CommentsCount int `json:"comments_count"`
RatingsCount int `json:"ratings_count"`
AppealsCount int `json:"appeals_count"`
ObjectsCount int `json:"objects_count"`
FeedbacksCount int `json:"feedbacks_count"`
CommentsCount int `json:"comments_count"`
RatingsCount int `json:"ratings_count"`
AppealsCount int `json:"appeals_count"`
}
// AuthResponse - DTO для ответа при авторизации
type AuthResponse struct {
Token string `json:"token"`
TokenType string `json:"token_type"`
ExpiresAt int64 `json:"expires_at"`
Account AccountResponse `json:"account"`
Token string `json:"token"`
TokenType string `json:"token_type"`
ExpiresAt int64 `json:"expires_at"`
Account AccountResponse `json:"account"`
}
// PasswordResetResponse - DTO для ответа о сбросе пароля