Files
photography/backend-old/internal/model/dto/auth_dto.go
xujiang 604b9e59ba fix
2025-07-10 18:09:11 +08:00

107 lines
3.4 KiB
Go

package dto
import (
"time"
"photography-backend/internal/model/entity"
)
// LoginRequest 登录请求
type LoginRequest struct {
Email string `json:"email" binding:"required,email" validate:"required,email"`
Password string `json:"password" binding:"required" validate:"required"`
}
// RegisterRequest 注册请求
type RegisterRequest struct {
Username string `json:"username" binding:"required,min=3,max=50" validate:"required,min=3,max=50"`
Email string `json:"email" binding:"required,email" validate:"required,email"`
Password string `json:"password" binding:"required,min=6" validate:"required,min=6"`
Name string `json:"name" binding:"max=100" validate:"max=100"`
}
// RefreshTokenRequest 刷新令牌请求
type RefreshTokenRequest struct {
RefreshToken string `json:"refresh_token" binding:"required" validate:"required"`
}
// TokenResponse 令牌响应
type TokenResponse struct {
AccessToken string `json:"access_token"`
RefreshToken string `json:"refresh_token"`
TokenType string `json:"token_type"`
ExpiresIn int64 `json:"expires_in"`
ExpiresAt time.Time `json:"expires_at"`
}
// LoginResponse 登录响应
type LoginResponse struct {
Token TokenResponse `json:"token"`
User UserResponse `json:"user"`
}
// RegisterResponse 注册响应
type RegisterResponse struct {
Token TokenResponse `json:"token"`
User UserResponse `json:"user"`
}
// TokenClaims JWT 令牌声明
type TokenClaims struct {
UserID uint `json:"user_id"`
Username string `json:"username"`
Email string `json:"email"`
Role entity.UserRole `json:"role"`
TokenID string `json:"token_id"`
IssuedAt time.Time `json:"issued_at"`
ExpiresAt time.Time `json:"expires_at"`
}
// ResetPasswordRequest 重置密码请求
type ResetPasswordRequest struct {
Email string `json:"email" binding:"required,email" validate:"required,email"`
}
// ConfirmResetPasswordRequest 确认重置密码请求
type ConfirmResetPasswordRequest struct {
Token string `json:"token" binding:"required" validate:"required"`
NewPassword string `json:"new_password" binding:"required,min=6" validate:"required,min=6"`
}
// VerifyEmailRequest 验证邮箱请求
type VerifyEmailRequest struct {
Token string `json:"token" binding:"required" validate:"required"`
}
// LogoutRequest 登出请求
type LogoutRequest struct {
Token string `json:"token" binding:"required" validate:"required"`
}
// AuthStatsResponse 认证统计响应
type AuthStatsResponse struct {
TotalLogins int64 `json:"total_logins"`
ActiveSessions int64 `json:"active_sessions"`
FailedAttempts int64 `json:"failed_attempts"`
RecentLogins []LoginInfo `json:"recent_logins"`
LoginsByHour map[string]int64 `json:"logins_by_hour"`
LoginsByDevice map[string]int64 `json:"logins_by_device"`
}
// LoginInfo 登录信息
type LoginInfo struct {
UserID uint `json:"user_id"`
Username string `json:"username"`
Email string `json:"email"`
LoginTime time.Time `json:"login_time"`
IPAddress string `json:"ip_address"`
UserAgent string `json:"user_agent"`
Success bool `json:"success"`
}
// ValidateTokenResponse 验证令牌响应
type ValidateTokenResponse struct {
Valid bool `json:"valid"`
Claims *TokenClaims `json:"claims,omitempty"`
Error string `json:"error,omitempty"`
}