reface to openteam

This commit is contained in:
Sakurasan
2025-04-16 18:01:27 +08:00
parent bc223d6530
commit e7ffc9e8b9
92 changed files with 5345 additions and 1273 deletions

38
internal/model/passkey.go Normal file
View File

@@ -0,0 +1,38 @@
package model
import (
"time"
)
// Passkey 用户凭证密钥模型
type Passkey struct {
ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"`
UserID int64 `json:"user_id" gorm:"column:user_id;index"`
CredentialID string `json:"credential_id" gorm:"column:credential_id;index"` // 凭证ID用于识别特定的passkey
PublicKey string `json:"public_key" gorm:"column:public_key"` // 公钥,用于验证签名
AttestationType string `json:"attestation_type" gorm:"column:attestation_type"` // 证明类型
AAGUID string `json:"aaguid" gorm:"column:aaguid"` // 认证器标识符
SignCount uint32 `json:"sign_count" gorm:"column:sign_count"` // 签名计数器,用于防止重放攻击
Name string `json:"name" gorm:"column:name"` // 凭证名称,用于用户识别不同的设备
DeviceType string `json:"device_type" gorm:"column:device_type"` // 设备类型
BackupEligible bool `json:"backup_eligible" gorm:"column:backup_eligible"` // 是否可备份
BackupState bool `json:"backup_state" gorm:"backup_state"` // 备份状态
Transport string `json:"transport" gorm:"column:transport"` // 传输方式 如usb、nfc、ble等
LastUsedAt int64 `json:"last_used_at" gorm:"column:last_used_at;autoUpdateTime"` // 最后使用时间
CreatedAt int64 `json:"created_at,omitempty" gorm:"column:created_at;autoCreateTime"`
UpdatedAt int64 `json:"updated_at,omitempty" gorm:"column:updated_at;autoUpdateTime"`
// 关联用户模型(不存入数据库)
User User `json:"-" gorm:"foreignKey:UserID;references:ID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE"`
}
// 创建表结构
func (Passkey) TableName() string {
return "passkeys"
}
// UpdateSignCount 更新签名计数器和最后使用时间
func (p *Passkey) UpdateSignCount(count uint32) {
p.SignCount = count
p.LastUsedAt = time.Now().Unix()
}