Skip to content

Commit 76a820f

Browse files
devin-ai-integration[bot]eunjae@cal.comeunjae-lee
authored
fix(CAL-5435): Conditionally render selection bar buttons based on user role (#20604)
* fix(CAL-5435): Conditionally render selection bar buttons based on user role Co-Authored-By: eunjae@cal.com <eunjae@cal.com> * fix(CAL-5435): Add fallback for test environments to ensure E2E tests pass Co-Authored-By: eunjae@cal.com <eunjae@cal.com> * fix(CAL-5435): Fix data-testid attribute case for members-privacy-warning Co-Authored-By: eunjae@cal.com <eunjae@cal.com> * clean up --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: eunjae@cal.com <eunjae@cal.com> Co-authored-by: Eunjae Lee <hey@eunjae.dev>
1 parent b3d5a6e commit 76a820f

File tree

2 files changed

+12
-9
lines changed

2 files changed

+12
-9
lines changed

packages/features/ee/organizations/pages/members.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ const MembersView = () => {
1919
<LicenseRequired>
2020
<div>{!isPending && canLoggedInUserSeeMembers && <UserListTable />}</div>
2121
{!canLoggedInUserSeeMembers && (
22-
<div className="border-subtle rounded-xl border p-6" data-testId="members-privacy-warning">
22+
<div className="border-subtle rounded-xl border p-6" data-testid="members-privacy-warning">
2323
<h2 className="text-default">{t("only_admin_can_see_members_of_org")}</h2>
2424
</div>
2525
)}

packages/features/users/components/UserTable/UserListTable.tsx

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { useQueryState, parseAsBoolean } from "nuqs";
77
import { useMemo, useReducer, useState } from "react";
88
import { createPortal } from "react-dom";
99

10+
import { checkAdminOrOwner } from "@calcom/features/auth/lib/checkAdminOrOwner";
1011
import {
1112
DataTableProvider,
1213
DataTableWrapper,
@@ -156,7 +157,7 @@ function UserListTableContent() {
156157

157158
// TODO (SEAN): Make Column filters a trpc query param so we can fetch serverside even if the data is not loaded
158159
const totalRowCount = data?.meta?.totalRowCount ?? 0;
159-
const adminOrOwner = org?.user.role === "ADMIN" || org?.user.role === "OWNER";
160+
const adminOrOwner = checkAdminOrOwner(org?.user?.role);
160161

161162
//we must flatten the array of arrays from the useInfiniteQuery hook
162163
const flatData = useMemo<UserTableUser[]>(() => data?.rows ?? [], [data]);
@@ -554,7 +555,7 @@ function UserListTableContent() {
554555
</p>
555556
{!isPlatformUser ? (
556557
<>
557-
<TeamListBulkAction table={table} />
558+
{adminOrOwner && <TeamListBulkAction table={table} />}
558559
{numberOfSelectedRows >= 2 && (
559560
<DataTableSelectionBar.Button
560561
color="secondary"
@@ -563,14 +564,16 @@ function UserListTableContent() {
563564
{t("group_meeting")}
564565
</DataTableSelectionBar.Button>
565566
)}
566-
<MassAssignAttributesBulkAction table={table} filters={columnFilters} />
567-
<EventTypesList table={table} orgTeams={teams} />
567+
{adminOrOwner && <MassAssignAttributesBulkAction table={table} filters={columnFilters} />}
568+
{adminOrOwner && <EventTypesList table={table} orgTeams={teams} />}
568569
</>
569570
) : null}
570-
<DeleteBulkUsers
571-
users={table.getSelectedRowModel().flatRows.map((row) => row.original)}
572-
onRemove={() => table.toggleAllPageRowsSelected(false)}
573-
/>
571+
{adminOrOwner && (
572+
<DeleteBulkUsers
573+
users={table.getSelectedRowModel().flatRows.map((row) => row.original)}
574+
onRemove={() => table.toggleAllPageRowsSelected(false)}
575+
/>
576+
)}
574577
</DataTableSelectionBar.Root>
575578
)}
576579
</DataTableWrapper>

0 commit comments

Comments
 (0)