- |
+ |
Username
|
-
+ |
Umbral Name
|
-
+ |
Email
|
-
+ |
Role
|
-
+ |
Status
|
-
+ |
Last Login
|
-
+ |
MFA
|
-
+ |
Sessions
|
-
+ |
Created
|
-
+ |
Actions
|
@@ -211,17 +211,17 @@ export default function IAMPage() {
)
)}
>
- {user.username} |
-
+ | {user.username} |
+
{user.umbral_name || user.username}
|
-
+ |
{user.email || '—'}
|
-
+ |
|
-
+ |
|
-
+ |
{user.last_login_at ? getRelativeTime(user.last_login_at) : '—'}
|
-
+ |
{user.totp_enabled ? (
On
@@ -249,13 +249,13 @@ export default function IAMPage() {
—
)}
|
-
+ |
{user.active_sessions}
|
-
+ |
{getRelativeTime(user.created_at)}
|
- e.stopPropagation()}>
+ | e.stopPropagation()}>
|
diff --git a/frontend/src/components/admin/UserActionsMenu.tsx b/frontend/src/components/admin/UserActionsMenu.tsx
index f4a641d..056e5a7 100644
--- a/frontend/src/components/admin/UserActionsMenu.tsx
+++ b/frontend/src/components/admin/UserActionsMenu.tsx
@@ -147,7 +147,7 @@ export default function UserActionsMenu({ user, currentUsername }: UserActionsMe
{roleSubmenuOpen && (
setRoleSubmenuOpen(true)}
onMouseLeave={() => setRoleSubmenuOpen(false)}
>
diff --git a/frontend/src/components/admin/UserDetailSection.tsx b/frontend/src/components/admin/UserDetailSection.tsx
index 26ab578..f5b8e09 100644
--- a/frontend/src/components/admin/UserDetailSection.tsx
+++ b/frontend/src/components/admin/UserDetailSection.tsx
@@ -71,15 +71,15 @@ export default function UserDetailSection({ userId, onClose }: UserDetailSection
if (isLoading) {
return (
-
-
+
+
{Array.from({ length: 5 }).map((_, i) => (
))}
-
+
{Array.from({ length: 7 }).map((_, i) => (
@@ -109,9 +109,9 @@ export default function UserDetailSection({ userId, onClose }: UserDetailSection
if (!user) return null;
return (
-
+
{/* User Information (read-only) */}
-
+
@@ -152,7 +152,7 @@ export default function UserDetailSection({ userId, onClose }: UserDetailSection
{/* Security & Permissions */}
-
+
@@ -168,7 +168,7 @@ export default function UserDetailSection({ userId, onClose }: UserDetailSection