feat: invitations are working - first iteration

This commit is contained in:
Pablo Lara
2024-11-14 11:55:11 +01:00
parent 1dc4bd313a
commit 58068b34bf
4 changed files with 38 additions and 4 deletions
+4 -1
View File
@@ -56,6 +56,10 @@ export const createNewUser = async (
const keyServer = process.env.API_BASE_URL;
const url = new URL(`${keyServer}/users`);
if (formData.invitationToken) {
url.searchParams.append("invitation_token", formData.invitationToken);
}
const bodyData = {
data: {
type: "User",
@@ -79,7 +83,6 @@ export const createNewUser = async (
});
const parsedResponse = await response.json();
if (!response.ok) {
return parsedResponse;
}
+8 -2
View File
@@ -1,7 +1,13 @@
import { AuthForm } from "@/components/auth/oss";
import { SearchParamsProps } from "@/types";
const SignUp = () => {
return <AuthForm type="sign-up" />;
const SignUp = ({ searchParams }: { searchParams: SearchParamsProps }) => {
const invitationToken =
typeof searchParams?.invitation_token === "string"
? searchParams.invitation_token
: null;
return <AuthForm type="sign-up" invitationToken={invitationToken} />;
};
export default SignUp;
+24 -1
View File
@@ -20,7 +20,13 @@ import {
} from "@/components/ui/form";
import { ApiError, authFormSchema } from "@/types";
export const AuthForm = ({ type }: { type: string }) => {
export const AuthForm = ({
type,
invitationToken,
}: {
type: string;
invitationToken?: string | null;
}) => {
const formSchema = authFormSchema(type);
const router = useRouter();
@@ -96,6 +102,12 @@ export const AuthForm = ({ type }: { type: string }) => {
message: errorMessage,
});
break;
case "/data/attributes/invitation_token":
form.setError("invitationToken", {
type: "server",
message: errorMessage,
});
break;
default:
toast({
variant: "destructive",
@@ -186,6 +198,17 @@ export const AuthForm = ({ type }: { type: string }) => {
name="confirmPassword"
confirmPassword
/>
{invitationToken && (
<CustomInput
control={form.control}
name="invitationToken"
type="text"
label="Invitation Token"
placeholder={invitationToken}
isRequired={false}
isInvalid={!!form.formState.errors.invitationToken}
/>
)}
<FormField
control={form.control}
name="termsAndConditions"
+2
View File
@@ -21,6 +21,8 @@ export const authFormSchema = (type: string) =>
: z.string().min(12, {
message: "It must contain at least 12 characters.",
}),
invitationToken:
type === "sign-in" ? z.string().optional() : z.string().optional(),
termsAndConditions:
type === "sign-in"
? z.boolean().optional()