mirror of
https://github.com/formbricks/formbricks.git
synced 2026-02-28 19:41:42 -06:00
Fix prevent duplicate team invite (#536)
* check for existing invites * add success / error toast on invite * add toast on member / invite removal
This commit is contained in:
@@ -152,10 +152,16 @@ export function EditMemberships({ environmentId }: EditMembershipsProps) {
|
||||
}
|
||||
|
||||
const handleDeleteMember = async () => {
|
||||
let result = false;
|
||||
if (activeMember.accepted) {
|
||||
await removeMember(team.teamId, activeMember.userId);
|
||||
result = await removeMember(team.teamId, activeMember.userId);
|
||||
} else {
|
||||
await deleteInvite(team.teamId, activeMember.inviteId);
|
||||
result = await deleteInvite(team.teamId, activeMember.inviteId);
|
||||
}
|
||||
if (result) {
|
||||
toast.success("Member removed successfully");
|
||||
} else {
|
||||
toast.error("Something went wrong");
|
||||
}
|
||||
setDeleteMemberModalOpen(false);
|
||||
mutateTeam();
|
||||
@@ -173,7 +179,12 @@ export function EditMemberships({ environmentId }: EditMembershipsProps) {
|
||||
|
||||
const handleAddMember = async (data) => {
|
||||
// TODO: handle http 409 user is already part of the team
|
||||
await addMember(team.teamId, data);
|
||||
const add = await addMember(team.teamId, data);
|
||||
if (add) {
|
||||
toast.success("Member invited successfully");
|
||||
} else {
|
||||
toast.error("Something went wrong");
|
||||
}
|
||||
mutateTeam();
|
||||
};
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ export const addMember = async (teamId: string, data: { name: string; email: str
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify(data),
|
||||
});
|
||||
return result.status === 200;
|
||||
return result.status === 201;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return false;
|
||||
|
||||
@@ -35,6 +35,11 @@ export default async function handle(req: NextApiRequest, res: NextApiResponse)
|
||||
let { email, name, role } = req.body;
|
||||
email = email.toLowerCase();
|
||||
|
||||
const existingInvite = await prisma.invite.findFirst({ where: { email, teamId } });
|
||||
if (existingInvite) {
|
||||
return res.status(409).json({ message: "Invite already exists" });
|
||||
}
|
||||
|
||||
const user = await prisma.user.findUnique({ where: { email } });
|
||||
|
||||
if (user) {
|
||||
|
||||
Reference in New Issue
Block a user