Fix: Don't display requested by when user has no access to read workspace members

This commit is contained in:
Daniel Hougaard
2024-05-07 17:30:35 +02:00
parent 44370d49e3
commit c911a7cd81
@@ -30,6 +30,7 @@ import {
} from "@app/components/v2"; } from "@app/components/v2";
import { import {
ProjectPermissionActions, ProjectPermissionActions,
ProjectPermissionSub,
useProjectPermission, useProjectPermission,
useSubscription, useSubscription,
useWorkspace useWorkspace
@@ -272,7 +273,7 @@ export const AccessApprovalRequest = ({
"reviewRequest", "reviewRequest",
"upgradePlan" "upgradePlan"
] as const); ] as const);
const { membership } = useProjectPermission(); const { membership, permission } = useProjectPermission();
const { subscription } = useSubscription(); const { subscription } = useSubscription();
const { currentWorkspace } = useWorkspace(); const { currentWorkspace } = useWorkspace();
@@ -460,33 +461,37 @@ export const AccessApprovalRequest = ({
))} ))}
</DropdownMenuContent> </DropdownMenuContent>
</DropdownMenu> </DropdownMenu>
<DropdownMenu> {!!permission.can(ProjectPermissionActions.Read, ProjectPermissionSub.Member) && (
<DropdownMenuTrigger> <DropdownMenu>
<Button <DropdownMenuTrigger>
variant="plain" <Button
colorSchema="secondary" variant="plain"
className={requestedByFilter ? "text-white" : "text-bunker-300"} colorSchema="secondary"
rightIcon={<FontAwesomeIcon icon={faChevronDown} size="sm" className="ml-2" />} className={requestedByFilter ? "text-white" : "text-bunker-300"}
> rightIcon={
Requested By <FontAwesomeIcon icon={faChevronDown} size="sm" className="ml-2" />
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>Select an author</DropdownMenuLabel>
{members?.map(({ user, id }) => (
<DropdownMenuItem
onClick={() =>
setRequestedByFilter((state) => (state === id ? undefined : id))
} }
key={`request-filter-member-${id}`}
icon={requestedByFilter === id && <FontAwesomeIcon icon={faCheckCircle} />}
iconPos="right"
> >
{user.email} Requested By
</DropdownMenuItem> </Button>
))} </DropdownMenuTrigger>
</DropdownMenuContent> <DropdownMenuContent align="end">
</DropdownMenu> <DropdownMenuLabel>Select an author</DropdownMenuLabel>
{members?.map(({ user, id }) => (
<DropdownMenuItem
onClick={() =>
setRequestedByFilter((state) => (state === id ? undefined : id))
}
key={`request-filter-member-${id}`}
icon={requestedByFilter === id && <FontAwesomeIcon icon={faCheckCircle} />}
iconPos="right"
>
{user.email}
</DropdownMenuItem>
))}
</DropdownMenuContent>
</DropdownMenu>
)}
</div> </div>
</div> </div>
<div className="flex flex-col rounded-b-md border-x border-t border-b border-mineshaft-600 bg-mineshaft-800"> <div className="flex flex-col rounded-b-md border-x border-t border-b border-mineshaft-600 bg-mineshaft-800">