From 7e48953b6ab35cf8f2d64e201198a8f9fb4c3a0b Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Wed, 12 Jun 2024 15:56:54 +0530 Subject: [PATCH] Store token data on passkey auth --- server/pkg/api/user.go | 6 ++++++ server/pkg/repo/passkey/passkey.go | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/server/pkg/api/user.go b/server/pkg/api/user.go index eca3804e5c..4624ab05ff 100644 --- a/server/pkg/api/user.go +++ b/server/pkg/api/user.go @@ -374,6 +374,12 @@ func (h *UserHandler) FinishPasskeyAuthenticationCeremony(c *gin.Context) { return } + err = h.UserController.PasskeyRepo.StoreTokenData(request.SessionID, response) + if err != nil { + handler.Error(c, stacktrace.Propagate(err, "failed to store token data")) + return + } + c.JSON(http.StatusOK, response) } diff --git a/server/pkg/repo/passkey/passkey.go b/server/pkg/repo/passkey/passkey.go index 5f8d3d642d..52221ab74b 100644 --- a/server/pkg/repo/passkey/passkey.go +++ b/server/pkg/repo/passkey/passkey.go @@ -167,6 +167,16 @@ func (r *Repository) GetUserIDWithPasskeyTwoFactorSession(sessionID string) (use return } +// StoreTokenData takes a sessionID, and tokenData, and updates the tokenData in the database +func (r *Repository) StoreTokenData(sessionID string, tokenData ente.TwoFactorAuthorizationResponse) error { + tokenDataJson, err := json.Marshal(tokenData) + if err != nil { + return stacktrace.Propagate(err, "") + } + _, err = r.DB.Exec(`UPDATE passkey_login_sessions SET token_data = $1, verified_at = now_utc_micro_seconds() WHERE session_id = $2`, tokenDataJson, sessionID) + return stacktrace.Propagate(err, "") +} + func (r *Repository) CreateBeginAuthenticationData(user *ente.User) (options *protocol.CredentialAssertion, session *webauthn.SessionData, id uuid.UUID, err error) { passkeyUser := &PasskeyUser{ User: user,