Continue RolePermissionsTable

This commit is contained in:
Tuan Dang
2024-07-19 15:24:21 +07:00
parent 7127f6d1e1
commit 22878a035b
4 changed files with 157 additions and 1 deletions

View File

@@ -32,7 +32,7 @@ export const getDefaultOnPremFeatures = (): TFeatureSet => ({
oidcSSO: false,
scim: false,
ldap: false,
groups: false,
groups: true,
status: null,
trial_end: null,
has_used_trial: true,

View File

@@ -0,0 +1,93 @@
import { faPlus } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
// import { createNotification } from "@app/components/notifications";
import {
// DeleteActionModal,
IconButton
} from "@app/components/v2";
// import { useDeleteIdentityFromWorkspace } from "@app/hooks/api";
// import { usePopUp } from "@app/hooks/usePopUp";
// import { IdentityAddToProjectModal } from "./IdentityAddToProjectModal";
// import { IdentityProjectsTable } from "./IdentityProjectsTable";
export const RolePermissionsSesction = () => {
// const { mutateAsync: deleteMutateAsync } = useDeleteIdentityFromWorkspace();
// const { popUp, handlePopUpOpen, handlePopUpClose, handlePopUpToggle } = usePopUp([
// "addIdentityToProject",
// "removeIdentityFromProject"
// ] as const);
// const onRemoveIdentitySubmit = async (id: string, projectId: string) => {
// try {
// await deleteMutateAsync({
// identityId: id,
// workspaceId: projectId
// });
// createNotification({
// text: "Successfully removed identity from project",
// type: "success"
// });
// handlePopUpClose("removeIdentityFromProject");
// } catch (err) {
// console.error(err);
// const error = err as any;
// const text = error?.response?.data?.message ?? "Failed to remove identity from project";
// createNotification({
// text,
// type: "error"
// });
// }
// };
return (
<div className="w-full rounded-lg border border-mineshaft-600 bg-mineshaft-900 p-4">
<div className="flex items-center justify-between border-b border-mineshaft-400 pb-4">
<h3 className="text-lg font-semibold text-mineshaft-100">Permissions</h3>
<IconButton
ariaLabel="copy icon"
variant="plain"
className="group relative"
onClick={() => {
console.log("TODO");
// handlePopUpOpen("addIdentityToProject");
}}
>
<FontAwesomeIcon icon={faPlus} />
</IconButton>
</div>
<div className="py-4">
Permissions Table
{/* <IdentityProjectsTable identityId={identityId} handlePopUpOpen={handlePopUpOpen} /> */}
</div>
{/* <DeleteActionModal
isOpen={popUp.removeIdentityFromProject.isOpen}
title={`Are you sure want to remove ${
(popUp?.removeIdentityFromProject?.data as { identityName: string })?.identityName || ""
} from ${
(popUp?.removeIdentityFromProject?.data as { projectName: string })?.projectName || ""
}?`}
onChange={(isOpen) => handlePopUpToggle("removeIdentityFromProject", isOpen)}
deleteKey="confirm"
onDeleteApproved={() => {
const popupData = popUp?.removeIdentityFromProject?.data as {
identityId: string;
projectId: string;
};
return onRemoveIdentitySubmit(popupData.identityId, popupData.projectId);
}}
/> */}
{/* <IdentityAddToProjectModal
identityId={identityId}
popUp={popUp}
handlePopUpToggle={handlePopUpToggle}
/> */}
</div>
);
};

View File

@@ -0,0 +1,62 @@
import { faKey } from "@fortawesome/free-solid-svg-icons";
import {
EmptyState,
Table,
TableContainer,
TableSkeleton,
TBody,
Th,
THead,
Tr
} from "@app/components/v2";
import { useGetIdentityProjectMemberships } from "@app/hooks/api";
// import { UsePopUpState } from "@app/hooks/usePopUp";
// import { IdentityProjectRow } from "./IdentityProjectRow";
type Props = {
identityId: string;
// handlePopUpOpen: (
// popUpName: keyof UsePopUpState<["removeIdentityFromProject"]>,
// data?: {}
// ) => void;
};
export const IdentityProjectsTable = ({
identityId
}: // handlePopUpOpen
Props) => {
const { data: projectMemberships, isLoading } = useGetIdentityProjectMemberships(identityId);
return (
<TableContainer>
<Table>
<THead>
<Tr>
<Th>Name</Th>
<Th>Role</Th>
<Th>Added On</Th>
<Th className="w-5" />
</Tr>
</THead>
<TBody>
{isLoading && <TableSkeleton columns={2} innerKey="identity-project-memberships" />}
{!isLoading &&
projectMemberships?.map((membership) => {
return (
<div key={`membership-${membership.id}`}>Row</div>
// <IdentityProjectRow
// key={`identity-project-membership-${membership.id}`}
// membership={membership}
// handlePopUpOpen={handlePopUpOpen}
// />
);
})}
</TBody>
</Table>
{!isLoading && !projectMemberships?.length && (
<EmptyState title="This identity has not been assigned to any projects" icon={faKey} />
)}
</TableContainer>
);
};

View File

@@ -0,0 +1 @@
export { RolePermissionsSesction } from "./RolePermissionsSection";