mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-15 07:35:09 +00:00
71 lines
2.1 KiB
TypeScript
71 lines
2.1 KiB
TypeScript
import { useCallback } from "react";
|
|
|
|
import { createNotification } from "@app/components/notifications";
|
|
import { DeleteActionModal } from "@app/components/v2";
|
|
import { useRemoveUserFromGroup } from "@app/hooks/api";
|
|
import { OrgUser } from "@app/hooks/api/users/types";
|
|
import { usePopUp } from "@app/hooks/usePopUp";
|
|
|
|
import { UserGroupsTable } from "./UserGroupsTable";
|
|
|
|
type Props = {
|
|
orgMembership: OrgUser;
|
|
};
|
|
|
|
export const UserGroupsSection = ({ orgMembership }: Props) => {
|
|
const { popUp, handlePopUpOpen, handlePopUpClose, handlePopUpToggle } = usePopUp([
|
|
"removeUserFromGroup"
|
|
] as const);
|
|
|
|
const { mutateAsync: removeUserFromGroup } = useRemoveUserFromGroup();
|
|
|
|
const handleRemoveUserFromGroup = useCallback(async (groupId: string, groupSlug: string) => {
|
|
try {
|
|
await removeUserFromGroup({
|
|
groupId,
|
|
slug: groupSlug,
|
|
username: orgMembership.user.username
|
|
});
|
|
|
|
createNotification({
|
|
type: "success",
|
|
text: "User removed from group successfully"
|
|
});
|
|
|
|
handlePopUpClose("removeUserFromGroup");
|
|
} catch (error) {
|
|
createNotification({
|
|
type: "error",
|
|
text: "Failed to remove user from group"
|
|
});
|
|
}
|
|
}, []);
|
|
|
|
return (
|
|
<>
|
|
<div className="w-full rounded-lg border border-mineshaft-600 bg-mineshaft-900 p-4">
|
|
<div className="mb-4 flex items-center justify-between border-b border-mineshaft-400 pb-4">
|
|
<h3 className="text-lg font-semibold text-mineshaft-100">Groups</h3>
|
|
</div>
|
|
|
|
<UserGroupsTable orgMembership={orgMembership} handlePopUpOpen={handlePopUpOpen} />
|
|
</div>
|
|
|
|
<DeleteActionModal
|
|
isOpen={popUp.removeUserFromGroup.isOpen}
|
|
title="Are you sure want to unassign user from group?"
|
|
onChange={(isOpen) => handlePopUpToggle("removeUserFromGroup", isOpen)}
|
|
deleteKey="confirm"
|
|
onDeleteApproved={() => {
|
|
const popupData = popUp?.removeUserFromGroup?.data as {
|
|
groupId: string;
|
|
groupSlug: string;
|
|
};
|
|
|
|
return handleRemoveUserFromGroup(popupData.groupId, popupData.groupSlug);
|
|
}}
|
|
/>
|
|
</>
|
|
);
|
|
};
|