💬 🗃️ user signup source and viral signup links

This commit is contained in:
Timur Ercan
2023-02-23 20:02:33 +01:00
parent fb31156e80
commit 40a32073dd
7 changed files with 27 additions and 6 deletions

View File

@ -14,7 +14,7 @@ type FormValues = {
apiError: string;
};
export default function Signup() {
export default function Signup(props: { source: string }) {
const methods = useForm<FormValues>({});
const {
register,
@ -34,6 +34,7 @@ export default function Signup() {
.promise(
fetch("/api/auth/signup", {
body: JSON.stringify({
source: props.source,
...data,
}),
headers: {

View File

@ -6,8 +6,7 @@ import { hashPassword } from "@documenso/lib/auth";
import { defaultHandler, defaultResponder } from "@documenso/lib/server";
async function postHandler(req: NextApiRequest, res: NextApiResponse) {
const data = req.body;
const { email, password } = data;
const { email, password, source } = req.body;
const cleanEmail = email.toLowerCase();
if (!cleanEmail || !cleanEmail.includes("@")) {
@ -46,6 +45,7 @@ async function postHandler(req: NextApiRequest, res: NextApiResponse) {
email: cleanEmail,
password: hashedPassword,
identityProvider: IdentityProvider.DOCUMENSO,
source: source,
},
});

View File

@ -67,7 +67,10 @@ const SignPage: NextPageWithLayout = (props: any) => {
</div>
<p className="mt-4 text-center text-sm text-gray-600">
Want to send slick signing links like this one?{" "}
<Link href="/signup" className="font-medium text-neon hover:text-neon">
<Link
href="/signup?source=signed"
className="font-medium text-neon hover:text-neon"
>
Create your own Account
</Link>
</p>

View File

@ -1,13 +1,23 @@
import { NextPageContext } from "next";
import Head from "next/head";
import Signup from "../components/signup";
export default function SignupPage() {
export default function SignupPage(props: { source: string }) {
return (
<>
<Head>
<title>Signup | Documenso</title>
</Head>
<Signup></Signup>
<Signup source={props.source}></Signup>
</>
);
}
export async function getServerSideProps(context: any) {
const signupSource: string = context.query["source"];
return {
props: {
source: signupSource ? signupSource : "",
},
};
}