* Icon and IconName * Button and ButtonGroup * UserAvatar * AvatarGroup * Avatar * WizardLayout * Dialogs * EmptyScreen * showToast and TextField * Editor * Skeleton * Skeleton * TopBanner and showToast * Button again * more * perf: Remove app-store reference from @calcom/ui * more * Fixing types * Icon * Fixed casing * dropdown * more * Select * more * Badge * List * more * Divider * more * fix * fix type check * refactor * fix * fix * fix * fix * fix * fix * fix * fix type check * fix * fix * fix * fix * more * more * more * more * add index file to components/command * fix * fix * fix * fix imports * fix * fix * fix * fix * fix * fix * fix * fix build errors * fix build errors * fix --------- Co-authored-by: Keith Williams <keithwillcode@gmail.com>
52 lines
1.5 KiB
TypeScript
52 lines
1.5 KiB
TypeScript
import { signIn, useSession } from "next-auth/react";
|
|
import type { Dispatch } from "react";
|
|
|
|
import { useLocale } from "@calcom/lib/hooks/useLocale";
|
|
import { Button } from "@calcom/ui/components/button";
|
|
import { Dialog, DialogContent, DialogFooter, DialogClose } from "@calcom/ui/components/dialog";
|
|
|
|
import type { UserTableAction, UserTableState } from "./types";
|
|
|
|
export function ImpersonationMemberModal(props: {
|
|
state: UserTableState;
|
|
dispatch: Dispatch<UserTableAction>;
|
|
}) {
|
|
const { t } = useLocale();
|
|
const { data: session } = useSession();
|
|
const teamId = session?.user.org?.id;
|
|
const user = props.state.impersonateMember.user;
|
|
|
|
if (!user || !teamId) return null;
|
|
|
|
return (
|
|
<Dialog
|
|
open={true}
|
|
onOpenChange={() =>
|
|
props.dispatch({
|
|
type: "CLOSE_MODAL",
|
|
})
|
|
}>
|
|
<DialogContent type="creation" title={t("impersonate")} description={t("impersonation_user_tip")}>
|
|
<form
|
|
onSubmit={async (e) => {
|
|
e.preventDefault();
|
|
await signIn("impersonation-auth", {
|
|
username: user.email,
|
|
teamId: teamId,
|
|
});
|
|
props.dispatch({
|
|
type: "CLOSE_MODAL",
|
|
});
|
|
}}>
|
|
<DialogFooter showDivider className="mt-8">
|
|
<DialogClose color="secondary">{t("cancel")}</DialogClose>
|
|
<Button color="primary" type="submit">
|
|
{t("impersonate")}
|
|
</Button>
|
|
</DialogFooter>
|
|
</form>
|
|
</DialogContent>
|
|
</Dialog>
|
|
);
|
|
}
|