fix: when creating new user, set email handle as username (#11238)

* When creating new user, set email handle as username

* Accounting for external invited users

---------

Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Leo Giovanetti <hello@leog.me>
This commit is contained in:
Joe Au-Yeung 2023-09-13 19:46:41 -04:00 committed by GitHub
parent bce62829b7
commit efcfd7bb9b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 0 deletions

View File

@ -68,6 +68,7 @@ export const inviteMemberHandler = async ({ ctx, input }: InviteMemberOptions) =
usernameOrEmail, usernameOrEmail,
input, input,
connectionInfo, connectionInfo,
autoAcceptEmailDomain,
parentId: team.parentId, parentId: team.parentId,
}); });

View File

@ -5,6 +5,7 @@ import { sendTeamInviteEmail, sendOrganizationAutoJoinEmail } from "@calcom/emai
import { WEBAPP_URL } from "@calcom/lib/constants"; import { WEBAPP_URL } from "@calcom/lib/constants";
import { isTeamAdmin } from "@calcom/lib/server/queries"; import { isTeamAdmin } from "@calcom/lib/server/queries";
import { isOrganisationAdmin } from "@calcom/lib/server/queries/organisations"; import { isOrganisationAdmin } from "@calcom/lib/server/queries/organisations";
import slugify from "@calcom/lib/slugify";
import { prisma } from "@calcom/prisma"; import { prisma } from "@calcom/prisma";
import type { Team } from "@calcom/prisma/client"; import type { Team } from "@calcom/prisma/client";
import { Prisma, type User } from "@calcom/prisma/client"; import { Prisma, type User } from "@calcom/prisma/client";
@ -136,17 +137,26 @@ export async function createNewUserConnectToOrgIfExists({
usernameOrEmail, usernameOrEmail,
input, input,
parentId, parentId,
autoAcceptEmailDomain,
connectionInfo, connectionInfo,
}: { }: {
usernameOrEmail: string; usernameOrEmail: string;
input: InviteMemberOptions["input"]; input: InviteMemberOptions["input"];
parentId?: number | null; parentId?: number | null;
autoAcceptEmailDomain?: string;
connectionInfo: ReturnType<typeof getOrgConnectionInfo>; connectionInfo: ReturnType<typeof getOrgConnectionInfo>;
}) { }) {
const { orgId, autoAccept } = connectionInfo; const { orgId, autoAccept } = connectionInfo;
const [emailUser, emailDomain] = usernameOrEmail.split("@");
const username =
emailDomain === autoAcceptEmailDomain
? slugify(emailUser)
: slugify(`${emailUser}-${emailDomain.split(".")[0]}`);
const createdUser = await prisma.user.create({ const createdUser = await prisma.user.create({
data: { data: {
username,
email: usernameOrEmail, email: usernameOrEmail,
verified: true, verified: true,
invitedTo: input.teamId, invitedTo: input.teamId,