You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

65 lines
3.3 KiB

package model
import (
"time"
"gorm.io/gorm"
)
// PasswordPolicy 密码策略
type PasswordPolicy struct {
ID uint `gorm:"primarykey" json:"id"`
Level int `gorm:"not null;default:1" json:"level"` // 密码策略等级 0-5
MinRequiredLevel int `gorm:"not null;default:1" json:"min_required_level"` // 新增:系统要求的最低密码强度等级
MinLength int `gorm:"not null;default:6" json:"min_length"` // 最小长度
RequireUppercase bool `gorm:"not null;default:false" json:"require_uppercase"` // 要求大写字母
RequireLowercase bool `gorm:"not null;default:false" json:"require_lowercase"` // 要求小写字母
RequireNumbers bool `gorm:"not null;default:false" json:"require_numbers"` // 要求数字
RequireSpecial bool `gorm:"not null;default:false" json:"require_special"` // 要求特殊字符
MinCharTypes int `gorm:"not null;default:1" json:"min_char_types"` // 最少字符类型数
ExpirationDays int `gorm:"not null;default:30" json:"expiration_days"` // 密码失效天数
PreventReuse int `gorm:"not null;default:3" json:"prevent_reuse"` // 防止重复使用前N次密码
IsActive bool `gorm:"not null;default:true" json:"is_active"` // 是否启用
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
}
// PasswordHistory 密码历史记录
type PasswordHistory struct {
ID uint `gorm:"primarykey" json:"id"`
UserID uint `gorm:"not null;index" json:"user_id"` // 用户ID
Password string `gorm:"not null;size:255" json:"password"` // 加密后的密码(bcrypt哈希)
ChangedAt time.Time `json:"changed_at"` // 密码修改时间
CreatedAt time.Time `json:"created_at"`
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
}
// PasswordReset 密码重置记录
type PasswordReset struct {
ID uint `gorm:"primarykey" json:"id"`
UserID uint `gorm:"not null;index" json:"user_id"` // 用户ID
ResetBy uint `gorm:"not null" json:"reset_by"` // 重置操作人ID
ResetAt time.Time `gorm:"not null" json:"reset_at"` // 重置时间
IsUsed bool `gorm:"not null;default:false" json:"is_used"` // 是否已使用
UsedAt *time.Time `json:"used_at"` // 使用时间
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
}
// PasswordChangeRequest 密码修改请求
type PasswordChangeRequest struct {
UserID uint `json:"user_id"`
CurrentPassword string `json:"current_password"`
NewPassword string `json:"new_password"`
ConfirmPassword string `json:"confirm_password"`
}
// PasswordValidationResult 密码验证结果
type PasswordValidationResult struct {
IsValid bool `json:"is_valid"`
Errors []string `json:"errors"`
Strength int `json:"strength"` // 密码强度 0-100
Level int `json:"level"` // 符合的密码等级
}