Skip to content

Commit c7775ad

Browse files
authored
Hide groups for regular users (#423)
1 parent cd3e75b commit c7775ad

File tree

3 files changed

+47
-51
lines changed

3 files changed

+47
-51
lines changed

src/app/(dashboard)/peer/page.tsx

Lines changed: 8 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -297,38 +297,21 @@ function PeerOverview() {
297297
/>
298298
</FullTooltip>
299299

300-
<div>
301-
<Label>Assigned Groups</Label>
302-
<HelpText>
303-
Use groups to control what this peer can access.
304-
</HelpText>
305-
<FullTooltip
306-
content={
307-
<div
308-
className={
309-
"flex gap-2 items-center !text-nb-gray-300 text-xs"
310-
}
311-
>
312-
<LockIcon size={14} />
313-
<span>
314-
{`You don't have the required permissions to update this
315-
setting.`}
316-
</span>
317-
</div>
318-
}
319-
interactive={false}
320-
className={"w-full block"}
321-
disabled={!isUser}
322-
>
300+
{!isUser && (
301+
<div>
302+
<Label>Assigned Groups</Label>
303+
<HelpText>
304+
Use groups to control what this peer can access.
305+
</HelpText>
323306
<PeerGroupSelector
324307
disabled={isUser}
325308
onChange={setSelectedGroups}
326309
values={selectedGroups}
327310
hideAllGroup={true}
328311
peer={peer}
329312
/>
330-
</FullTooltip>
331-
</div>
313+
</div>
314+
)}
332315
</div>
333316
</div>
334317
</div>

src/contexts/GroupsProvider.tsx

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import useFetchApi, { useApiCall } from "@utils/api";
22
import { merge, sortBy, unionBy } from "lodash";
3-
import { usePathname } from "next/navigation";
43
import React, { useEffect, useState } from "react";
54
import { useLoggedInUser } from "@/contexts/UsersProvider";
65
import { Group } from "@/interfaces/Group";
@@ -25,18 +24,29 @@ const GroupContext = React.createContext(
2524
);
2625

2726
export default function GroupsProvider({ children }: Props) {
28-
const path = usePathname();
29-
const { permission } = useLoggedInUser();
27+
const { permission, isUser } = useLoggedInUser();
3028

31-
return path === "/peers" && permission.dashboard_view == "blocked" ? (
29+
return permission.dashboard_view == "blocked" ? (
3230
<>{children}</>
3331
) : (
34-
<GroupsProviderContent>{children}</GroupsProviderContent>
32+
<GroupsProviderContent isUser={isUser}>{children}</GroupsProviderContent>
3533
);
3634
}
3735

38-
export function GroupsProviderContent({ children }: Props) {
39-
const { data: groups, mutate, isLoading } = useFetchApi<Group[]>("/groups");
36+
type ProviderContentProps = {
37+
children: React.ReactNode;
38+
isUser: boolean;
39+
};
40+
41+
export function GroupsProviderContent({
42+
children,
43+
isUser,
44+
}: Readonly<ProviderContentProps>) {
45+
const {
46+
data: groups,
47+
mutate,
48+
isLoading,
49+
} = useFetchApi<Group[]>("/groups", false, true, !isUser);
4050
const groupRequest = useApiCall<Group>("/groups", true);
4151
const [dropdownOptions, setDropdownOptions] = useState<Group[]>([]);
4252

src/modules/peers/PeersTable.tsx

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,7 @@ export default function PeersTable({ peers, isLoading, headingTarget }: Props) {
246246
user_name: false,
247247
user_email: false,
248248
actions: !isUser,
249+
groups: !isUser,
249250
}}
250251
isLoading={isLoading}
251252
getStartedCard={
@@ -423,30 +424,32 @@ export default function PeersTable({ peers, isLoading, headingTarget }: Props) {
423424

424425
<DataTableRowsPerPage table={table} disabled={peers?.length == 0} />
425426

426-
<GroupSelector
427-
disabled={peers?.length == 0}
428-
values={
429-
(table
430-
.getColumn("group_names")
431-
?.getFilterValue() as string[]) || []
432-
}
433-
onChange={(groups) => {
434-
table.setPageIndex(0);
435-
if (groups.length == 0) {
436-
table.getColumn("group_names")?.setFilterValue(undefined);
437-
return;
438-
} else {
439-
table.getColumn("group_names")?.setFilterValue(groups);
427+
{!isUser && (
428+
<GroupSelector
429+
disabled={peers?.length == 0}
430+
values={
431+
(table
432+
.getColumn("group_names")
433+
?.getFilterValue() as string[]) || []
440434
}
441-
resetSelectedRows();
442-
}}
443-
groups={tableGroups}
444-
/>
435+
onChange={(groups) => {
436+
table.setPageIndex(0);
437+
if (groups.length == 0) {
438+
table.getColumn("group_names")?.setFilterValue(undefined);
439+
return;
440+
} else {
441+
table.getColumn("group_names")?.setFilterValue(groups);
442+
}
443+
resetSelectedRows();
444+
}}
445+
groups={tableGroups}
446+
/>
447+
)}
445448

446449
<DataTableRefreshButton
447450
isDisabled={peers?.length == 0}
448451
onClick={() => {
449-
mutate("/groups").then();
452+
if (!isUser) mutate("/groups").then();
450453
mutate("/users").then();
451454
mutate("/peers").then();
452455
}}

0 commit comments

Comments
 (0)