fix passkey
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user