diff --git a/server/routers/user/listUsers.ts b/server/routers/user/listUsers.ts index 2e23f401..83c1e492 100644 --- a/server/routers/user/listUsers.ts +++ b/server/routers/user/listUsers.ts @@ -49,7 +49,8 @@ async function queryUsers(orgId: string, limit: number, offset: number) { roleName: roles.name, isOwner: userOrgs.isOwner, idpName: idp.name, - idpId: users.idpId + idpId: users.idpId, + twoFactorEnabled: users.twoFactorEnabled, }) .from(users) .leftJoin(userOrgs, eq(users.userId, userOrgs.userId)) diff --git a/src/app/[orgId]/settings/access/users/UsersTable.tsx b/src/app/[orgId]/settings/access/users/UsersTable.tsx index d3ee404e..017ab875 100644 --- a/src/app/[orgId]/settings/access/users/UsersTable.tsx +++ b/src/app/[orgId]/settings/access/users/UsersTable.tsx @@ -34,6 +34,7 @@ export type UserRow = { status: string; role: string; isOwner: boolean; + isTwoFactorEnabled: boolean; }; type UsersTableProps = { @@ -170,6 +171,39 @@ export default function UsersTable({ users: u }: UsersTableProps) { ); } }, + { + accessorKey: "isTwoFactorEnabled", + header: ({ column }) => { + return ( + + ); + }, + cell: ({ row }) => { + const userRow = row.original; + + return ( +
+ {userRow.isTwoFactorEnabled && ( + + {t('enabled')} + + ) || ( + + {t('disabled')} + + )} +
+ ); + } + }, { id: "actions", cell: ({ row }) => { diff --git a/src/app/[orgId]/settings/access/users/[userId]/access-controls/page.tsx b/src/app/[orgId]/settings/access/users/[userId]/access-controls/page.tsx index 191fac77..2929f75b 100644 --- a/src/app/[orgId]/settings/access/users/[userId]/access-controls/page.tsx +++ b/src/app/[orgId]/settings/access/users/[userId]/access-controls/page.tsx @@ -45,9 +45,6 @@ import { useTranslations } from "next-intl"; export default function AccessControlsPage() { const { orgUser: user, updateOrgUser } = userOrgUserContext(); - - console.log("User:", user); - const api = createApiClient(useEnvContext()); const { orgId } = useParams(); @@ -224,7 +221,7 @@ export default function AccessControlsPage() {

When enabled, the user will be required to set up their authenticator app on their next login. {user.twoFactorEnabled && ( - This user currently has 2FA enabled. + This user currently has 2FA enabled. )}

@@ -246,6 +243,8 @@ export default function AccessControlsPage() { + + ); } diff --git a/src/app/[orgId]/settings/access/users/page.tsx b/src/app/[orgId]/settings/access/users/page.tsx index 27b227fa..49637f71 100644 --- a/src/app/[orgId]/settings/access/users/page.tsx +++ b/src/app/[orgId]/settings/access/users/page.tsx @@ -81,7 +81,8 @@ export default async function UsersPage(props: UsersPageProps) { idpName: user.idpName || t('idpNameInternal'), status: t('userConfirmed'), role: user.isOwner ? t('accessRoleOwner') : user.roleName || t('accessRoleMember'), - isOwner: user.isOwner || false + isOwner: user.isOwner || false, + isTwoFactorEnabled: user.twoFactorEnabled || false, }; });