38 lines
1.0 KiB
TypeScript
38 lines
1.0 KiB
TypeScript
import slugify from "@calcom/lib/slugify";
|
|
|
|
import { ProfileRepository } from "./repository/profile";
|
|
import { isUsernameReservedDueToMigration } from "./username";
|
|
|
|
export async function checkRegularUsername(_username: string, currentOrgDomain?: string | null) {
|
|
const isCheckingUsernameInGlobalNamespace = !currentOrgDomain;
|
|
const username = slugify(_username);
|
|
|
|
const premium = !!process.env.NEXT_PUBLIC_IS_E2E && username.length < 5;
|
|
|
|
const profiles = currentOrgDomain
|
|
? await ProfileRepository.findManyByOrgSlugOrRequestedSlug({
|
|
orgSlug: currentOrgDomain,
|
|
usernames: [username],
|
|
})
|
|
: null;
|
|
|
|
const user = profiles?.length ? profiles[0].user : null;
|
|
|
|
if (user) {
|
|
return {
|
|
available: false as const,
|
|
premium,
|
|
message: "A user exists with that username",
|
|
};
|
|
}
|
|
|
|
const isUsernameAvailable = isCheckingUsernameInGlobalNamespace
|
|
? !(await isUsernameReservedDueToMigration(username))
|
|
: true;
|
|
|
|
return {
|
|
available: isUsernameAvailable,
|
|
premium,
|
|
};
|
|
}
|