Add prefill with query params
parent
914161ab08
commit
a6bf5287bd
|
@ -415,6 +415,14 @@ export default function Signup({ prepopulateFormValues, token, orgSlug }: Signup
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const querySchema = z.object({
|
||||||
|
username: z
|
||||||
|
.string()
|
||||||
|
.optional()
|
||||||
|
.transform((val) => val || ""),
|
||||||
|
email: z.string().email().optional(),
|
||||||
|
});
|
||||||
|
|
||||||
export const getServerSideProps = async (ctx: GetServerSidePropsContext) => {
|
export const getServerSideProps = async (ctx: GetServerSidePropsContext) => {
|
||||||
const prisma = await import("@calcom/prisma").then((mod) => mod.default);
|
const prisma = await import("@calcom/prisma").then((mod) => mod.default);
|
||||||
const flags = await getFeatureFlagMap(prisma);
|
const flags = await getFeatureFlagMap(prisma);
|
||||||
|
@ -428,6 +436,9 @@ export const getServerSideProps = async (ctx: GetServerSidePropsContext) => {
|
||||||
prepopulateFormValues: undefined,
|
prepopulateFormValues: undefined,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// username + email prepopulated from query params
|
||||||
|
const { username: preFillusername, email: prefilEmail } = querySchema.parse(ctx.query);
|
||||||
|
|
||||||
if (process.env.NEXT_PUBLIC_DISABLE_SIGNUP === "true" || flags["disable-signup"]) {
|
if (process.env.NEXT_PUBLIC_DISABLE_SIGNUP === "true" || flags["disable-signup"]) {
|
||||||
return {
|
return {
|
||||||
notFound: true,
|
notFound: true,
|
||||||
|
@ -437,7 +448,13 @@ export const getServerSideProps = async (ctx: GetServerSidePropsContext) => {
|
||||||
// no token given, treat as a normal signup without verification token
|
// no token given, treat as a normal signup without verification token
|
||||||
if (!token) {
|
if (!token) {
|
||||||
return {
|
return {
|
||||||
props: JSON.parse(JSON.stringify(props)),
|
props: {
|
||||||
|
...props,
|
||||||
|
prepopulateFormValues: {
|
||||||
|
username: preFillusername || null,
|
||||||
|
email: prefilEmail || null,
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -145,6 +145,17 @@ test.describe("Signup Flow Test", async () => {
|
||||||
// Check that the URL matches the expected URL
|
// Check that the URL matches the expected URL
|
||||||
expect(page.url()).toContain("/auth/verify-email");
|
expect(page.url()).toContain("/auth/verify-email");
|
||||||
});
|
});
|
||||||
|
test("Signup fields prefilled with query params", async ({ page, users }) => {
|
||||||
|
const signupUrlWithParams = "/signup?username=rick-jones&email=rick-jones%40example.com";
|
||||||
|
await page.goto(signupUrlWithParams);
|
||||||
|
|
||||||
|
// Fill form
|
||||||
|
const usernameInput = await page.locator('input[name="username"]');
|
||||||
|
const emailInput = await page.locator('input[name="email"]');
|
||||||
|
|
||||||
|
expect(await usernameInput.inputValue()).toBe("rick-jones");
|
||||||
|
expect(await emailInput.inputValue()).toBe("rick-jones@example.com");
|
||||||
|
});
|
||||||
test("Signup with token prefils correct fields", async ({ page, users, prisma }) => {
|
test("Signup with token prefils correct fields", async ({ page, users, prisma }) => {
|
||||||
//Create a user and create a token
|
//Create a user and create a token
|
||||||
const token = randomBytes(32).toString("hex");
|
const token = randomBytes(32).toString("hex");
|
||||||
|
|
Loading…
Reference in New Issue