From c586d4b6719066b99f58f11187f24c7d5ace7d2a Mon Sep 17 00:00:00 2001 From: Baobhan Sith <80159437+Heavrnl@users.noreply.github.com> Date: Thu, 8 May 2025 16:14:39 +0800 Subject: [PATCH] update --- .../src/repositories/passkey.repository.ts | 9 +- packages/frontend/src/stores/auth.store.ts | 22 +++++ packages/frontend/src/views/SettingsView.vue | 89 ++++++++++++++++--- 3 files changed, 105 insertions(+), 15 deletions(-) diff --git a/packages/backend/src/repositories/passkey.repository.ts b/packages/backend/src/repositories/passkey.repository.ts index 883a255..5d9d059 100644 --- a/packages/backend/src/repositories/passkey.repository.ts +++ b/packages/backend/src/repositories/passkey.repository.ts @@ -133,7 +133,14 @@ export class PasskeyRepository { const db = await getDbInstance(); const sql = 'DELETE FROM passkeys WHERE user_id = ?'; const { changes } = await runDb(db, sql, [userId]); - return changes > 0; + return changes > 0; + } + + async updatePasskeyName(credentialId: string, name: string): Promise { + const db = await getDbInstance(); + const sql = "UPDATE passkeys SET name = ?, updated_at = strftime('%s', 'now') WHERE credential_id = ?"; + const { changes } = await runDb(db, sql, [name, credentialId]); + return changes > 0; } } diff --git a/packages/frontend/src/stores/auth.store.ts b/packages/frontend/src/stores/auth.store.ts index 60ea4cb..5df85a9 100644 --- a/packages/frontend/src/stores/auth.store.ts +++ b/packages/frontend/src/stores/auth.store.ts @@ -483,6 +483,28 @@ export const useAuthStore = defineStore('auth', { this.isLoading = false; } }, + + // Action to update a passkey's name + async updatePasskeyName(credentialID: string, newName: string) { + if (!this.isAuthenticated) { + throw new Error('User not authenticated. Cannot update passkey name.'); + } + // Consider using a specific loading state for this if needed, e.g., this.passkeyNameUpdateLoading = true; + this.error = null; + try { + await apiClient.put(`/auth/user/passkeys/${credentialID}/name`, { name: newName }); + console.log(`Passkey ${credentialID} name updated to "${newName}".`); + // Refresh the passkey list to show the new name + await this.fetchPasskeys(); + return { success: true }; + } catch (err: any) { + console.error(`Failed to update passkey ${credentialID} name:`, err); + this.error = err.response?.data?.message || err.message || 'Failed to update passkey name.'; + throw new Error(this.error ?? 'Failed to update passkey name.'); + } finally { + // if using specific loading state: this.passkeyNameUpdateLoading = false; + } + }, }, persist: true, // Revert to simple persistence to fix TS error for now }); diff --git a/packages/frontend/src/views/SettingsView.vue b/packages/frontend/src/views/SettingsView.vue index d9ae578..982cf89 100644 --- a/packages/frontend/src/views/SettingsView.vue +++ b/packages/frontend/src/views/SettingsView.vue @@ -70,10 +70,27 @@