package models import ( "time" "github.com/google/uuid" "gorm.io/gorm" ) // MFAConfig represents multi-factor authentication configuration type MFAConfig struct { ID uuid.UUID `gorm:"type:uuid;primaryKey" json:"id"` UserID uuid.UUID `gorm:"type:uuid;not null;uniqueIndex" json:"user_id"` Secret string `gorm:"not null" json:"-"` BackupCodes string `gorm:"type:text" json:"-"` // JSON array of backup codes IsEnabled bool `gorm:"default:false" json:"is_enabled"` LastUsedAt *time.Time `json:"last_used_at"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` DeletedAt gorm.DeletedAt `gorm:"index" json:"-"` // Relations User User `gorm:"foreignKey:UserID" json:"-"` } // BeforeCreate hook to generate UUID if not set func (m *MFAConfig) BeforeCreate(tx *gorm.DB) error { if m.ID == uuid.Nil { m.ID = uuid.New() } return nil } // TableName returns the table name for the MFAConfig model func (MFAConfig) TableName() string { return "mfa_configs" }