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"` }