fix passkey

This commit is contained in:
Sakurasan
2025-04-18 02:47:10 +08:00
parent afb51b0a94
commit e0b531c578
5 changed files with 25 additions and 3 deletions

View File

@@ -71,6 +71,15 @@ func (a Api) ListApiKey(c *gin.Context) {
if err != nil {
dto.Fail(c, 500, err.Error())
} else {
for _, key := range keys {
str := *key.ApiKey
slen := len(str)
if slen > 20 {
slen = 20
}
str = str[:slen]
key.ApiKey = &str
}
dto.Success(c, gin.H{
"total": total,
"keys": keys,

View File

@@ -272,11 +272,22 @@ func (s *WebAuthnService) FinishLogin(challenge string, response *http.Request)
// return nil, err
// }
var user *WebAuthnUser
_, err = s.WebAuthn.FinishDiscoverableLogin(s.GetWebAuthnUser(&user), *sessionData, response)
wc, err := s.WebAuthn.FinishDiscoverableLogin(s.GetWebAuthnUser(&user), *sessionData, response)
if err != nil {
return nil, err
}
// 更新Passkey的LastUsedAt
// 更新Passkey 这里SignCount应该是由验证器上传但可能为0手动+1
var pk model.Passkey
if err := s.DB.Model(&model.Passkey{}).Where("credential_id = ?", base64.StdEncoding.EncodeToString(wc.ID)).First(&pk).Error; err == nil {
if err := s.DB.Model(&model.Passkey{}).Where("id = ?", pk.ID, time.Now().Unix()).Updates(map[string]interface{}{
"sign_count": pk.SignCount + 1,
"last_used_at": time.Now().Unix(),
}).Error; err != nil {
fmt.Println(err)
}
}
return user, nil
}