From e0b531c578af93f1a25e4ee5a926c83678d55ef9 Mon Sep 17 00:00:00 2001 From: Sakurasan <26715255+Sakurasan@users.noreply.github.com> Date: Fri, 18 Apr 2025 02:47:10 +0800 Subject: [PATCH] fix passkey --- frontend/src/views/Home.vue | 2 +- internal/controller/apikey.go | 9 +++++++++ internal/service/webauth.go | 15 +++++++++++++-- llm/claude/v2/chat.go | 1 + llm/google/v2/chat.go | 1 + 5 files changed, 25 insertions(+), 3 deletions(-) diff --git a/frontend/src/views/Home.vue b/frontend/src/views/Home.vue index 262d9af..b1ef577 100644 --- a/frontend/src/views/Home.vue +++ b/frontend/src/views/Home.vue @@ -115,7 +115,7 @@ const copyUrl = async () => { const star = ref(0); const getGithubStars = async () => { - const res = await fetch('https://ungh.cc/repos/mirrors2/opencatd-open', { next: { revalidate: 3600 } }); + const res = await fetch('https://ungh.cc/repos/mirrors2/openteam', { next: { revalidate: 3600 } }); const data = await res.json(); return data.repo.stars; }; diff --git a/internal/controller/apikey.go b/internal/controller/apikey.go index 1157abb..82961ee 100644 --- a/internal/controller/apikey.go +++ b/internal/controller/apikey.go @@ -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, diff --git a/internal/service/webauth.go b/internal/service/webauth.go index d205a4b..d2cfed8 100644 --- a/internal/service/webauth.go +++ b/internal/service/webauth.go @@ -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 } diff --git a/llm/claude/v2/chat.go b/llm/claude/v2/chat.go index 9252895..c8b2748 100644 --- a/llm/claude/v2/chat.go +++ b/llm/claude/v2/chat.go @@ -1,3 +1,4 @@ +// https://docs.anthropic.com/en/docs/about-claude/models/all-models package claude import ( diff --git a/llm/google/v2/chat.go b/llm/google/v2/chat.go index 444b729..1bd883b 100644 --- a/llm/google/v2/chat.go +++ b/llm/google/v2/chat.go @@ -1,4 +1,5 @@ // https://github.com/google-gemini/api-examples/ +// https://ai.google.dev/gemini-api/docs/models?hl=zh-cn package google