init
This commit is contained in:
78
frontend/components/auth/actions.ts
Normal file
78
frontend/components/auth/actions.ts
Normal file
@@ -0,0 +1,78 @@
|
||||
"use server";
|
||||
|
||||
import { SignupFormSchema, FormState } from "../../lib/definitions";
|
||||
import { login } from "@/lib/session";
|
||||
|
||||
const apiUrl = process.env.NEXT_SERVER_API_URL;
|
||||
|
||||
export async function signup(state: FormState, formData: FormData) {
|
||||
// Validate form fields
|
||||
const validatedFields = SignupFormSchema.safeParse({
|
||||
name: formData.get("name"),
|
||||
password: formData.get("password"),
|
||||
});
|
||||
|
||||
// If any form fields are invalid, return early
|
||||
if (!validatedFields.success) {
|
||||
return {
|
||||
errors: validatedFields.error.flatten().fieldErrors,
|
||||
};
|
||||
}
|
||||
|
||||
// Call the provider or db to create a user...
|
||||
const name = formData.get("name") as string;
|
||||
const password = formData.get("password") as string;
|
||||
|
||||
const payload = {
|
||||
name,
|
||||
password,
|
||||
};
|
||||
|
||||
try {
|
||||
const response = await fetch(`${apiUrl}/auth/signup`, {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
body: JSON.stringify(payload),
|
||||
cache: "no-store",
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
console.error("Response status:", response.status);
|
||||
throw new Error("Failed to submit form");
|
||||
} else {
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Error submitting form:", error);
|
||||
throw new Error("An error occurred while submitting the form.");
|
||||
}
|
||||
}
|
||||
|
||||
export async function signin(name: string, password: string) {
|
||||
const payload = {
|
||||
name,
|
||||
password,
|
||||
};
|
||||
|
||||
try {
|
||||
const response = await fetch(`${apiUrl}/auth/signin`, {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
body: JSON.stringify(payload),
|
||||
cache: "no-store",
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
return false;
|
||||
}
|
||||
|
||||
await login(name);
|
||||
return true;
|
||||
} catch (error) {
|
||||
console.error("Error submitting form:", error);
|
||||
throw new Error("An error occurred while submitting the form.");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user