From aa4b1bfd42108776caaa41b682911a6feda28967 Mon Sep 17 00:00:00 2001 From: Leo Vasanko Date: Thu, 4 Dec 2025 01:21:52 +0000 Subject: [PATCH] Viewing linked passkeys/sessions (by clicking either one of them). --- frontend/src/admin/AdminUserDetail.vue | 7 ++++ frontend/src/assets/style.css | 8 ++++- frontend/src/components/CredentialList.vue | 30 +++++++++++++++-- frontend/src/components/ProfileView.vue | 7 ++++ frontend/src/components/SessionList.vue | 38 ++++++++++++++++++---- passkey/util/userinfo.py | 1 + 6 files changed, 80 insertions(+), 11 deletions(-) diff --git a/frontend/src/admin/AdminUserDetail.vue b/frontend/src/admin/AdminUserDetail.vue index 07229d1..dbcd8be 100644 --- a/frontend/src/admin/AdminUserDetail.vue +++ b/frontend/src/admin/AdminUserDetail.vue @@ -19,6 +19,8 @@ const emit = defineEmits(['generateUserRegistrationLink', 'goOverview', 'openOrg const authStore = useAuthStore() const terminatingSessions = ref({}) +const hoveredCredentialUuid = ref(null) +const hoveredSession = ref(null) function onLinkCopied() { authStore.showMessage('Link copied to clipboard!') @@ -107,16 +109,21 @@ async function handleTerminateSession(session) { :credentials="userDetail.credentials" :aaguid-info="userDetail.aaguid_info" :allow-delete="true" + :hovered-credential-uuid="hoveredCredentialUuid" + :hovered-session-credential-uuid="hoveredSession?.credential_uuid" @delete="handleDelete" + @credential-hover="hoveredCredentialUuid = $event" />
diff --git a/frontend/src/assets/style.css b/frontend/src/assets/style.css index f1b1fde..4a74640 100644 --- a/frontend/src/assets/style.css +++ b/frontend/src/assets/style.css @@ -469,6 +469,7 @@ th { height: 100%; transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease; position: relative; + cursor: pointer; } .record-item:hover, @@ -481,7 +482,12 @@ th { .record-item.is-current, .credential-item.current-session, -.session-item.is-current { border-color: var(--color-accent); } +.credential-item.is-hovered, +.session-item.is-current, +.session-item.is-hovered { border-color: var(--color-accent); } + +.credential-item.is-linked-session, +.session-item.is-linked-credential { border-color: var(--color-accent); background-color: var(--color-surface-subtle); } .item-top { display: flex; diff --git a/frontend/src/components/CredentialList.vue b/frontend/src/components/CredentialList.vue index b1e7427..8a3d127 100644 --- a/frontend/src/components/CredentialList.vue +++ b/frontend/src/components/CredentialList.vue @@ -6,7 +6,14 @@
@@ -22,7 +29,9 @@

{{ getCredentialAuthName(credential) }}

- Current + Current + Selected + Linked