From 788d45d8a8e7341eb45f389bf9e6131667649ec6 Mon Sep 17 00:00:00 2001 From: gom-by Date: Thu, 23 Jan 2025 16:31:57 +0100 Subject: [PATCH] create member form funcitonnal --- backend/api/auth.go | 1 + backend/api/new_user.go | 5 +- backend/go.sum | 4 +- .../app/(auth)/dashboard/members/new/page.tsx | 90 +++++++++++++++---- 4 files changed, 77 insertions(+), 23 deletions(-) diff --git a/backend/api/auth.go b/backend/api/auth.go index 69b2b60..87919ec 100644 --- a/backend/api/auth.go +++ b/backend/api/auth.go @@ -36,6 +36,7 @@ func HandleLogin(w http.ResponseWriter, r *http.Request) { } body, err := io.ReadAll(r.Body) + fmt.Println(body) if err != nil { core.JSONError{ Status: core.Error, diff --git a/backend/api/new_user.go b/backend/api/new_user.go index b897d9e..6a94861 100644 --- a/backend/api/new_user.go +++ b/backend/api/new_user.go @@ -19,7 +19,8 @@ func HandleCreateUser(w http.ResponseWriter, r *http.Request) { }.Respond(w, http.StatusNotAcceptable) return } - + + log.Println("body : ", body ) var user core.User err = json.Unmarshal(body, &user) if err != nil { @@ -30,7 +31,7 @@ func HandleCreateUser(w http.ResponseWriter, r *http.Request) { return } - log.Println(user) + log.Println("User : ", user) res, err := user.Insert(context.Background()) log.Println(res) diff --git a/backend/go.sum b/backend/go.sum index 50e9fe5..dcaf24f 100644 --- a/backend/go.sum +++ b/backend/go.sum @@ -2,10 +2,10 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= -github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= -github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/csrf v1.7.2 h1:oTUjx0vyf2T+wkrx09Trsev1TE+/EbDAeHtSTbtC2eI= diff --git a/frontend/app/(auth)/dashboard/members/new/page.tsx b/frontend/app/(auth)/dashboard/members/new/page.tsx index fe5df79..33cc8b8 100644 --- a/frontend/app/(auth)/dashboard/members/new/page.tsx +++ b/frontend/app/(auth)/dashboard/members/new/page.tsx @@ -21,25 +21,45 @@ import { CardTitle, } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; +import useApiMutation from "@/hooks/use-api"; +import { + Select, + SelectContent, + SelectGroup, + SelectItem, + SelectLabel, + SelectTrigger, + SelectValue, +} from "@/components/ui/select" const formSchema = z.object({ - firstname: z.string().min(2, { message: "Prénom trop court" }), - lastname: z.string().min(2, { message: "Nom trop court" }), + firstname: z.string().min(2, { message: "Prénom trop court." }), + lastname: z.string().min(2, { message: "Nom trop court." }), + role: z.enum(["admin", "user"], { message: "Rôle invalide." }), phone: z .string() - .min(10, { message: "Un numéro de téléphone à 10 chiffres" }), - email: z.string().email({ message: "Invalid email address" }), - message: z - .string() - .min(10, { message: "Message must be at least 10 characters long" }), + .max(10, { message: "Un numéro de téléphone à 10 chiffres." }) + .optional(), + email: z.string().email({ message: "Email invalide." }) }); -export default function ContactFormPreview() { +export default function CreateMemberForm() { + const { + trigger + } = useApiMutation( + "/users/new", + { onSuccess: () => console.log("Member created") }, + "POST", + true, + false + ) + const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { firstname: "", lastname: "", + role: "user", phone: "", email: "", }, @@ -47,25 +67,24 @@ export default function ContactFormPreview() { async function onSubmit(values: z.infer) { try { - console.log(values); - await fetch("/api/users/new", { - method: "POST", - body: JSON.stringify(values), - }); + const res = await trigger(values) + if (!res) throw new Error("The server hasn't responded."); + if (res.status === "Error") throw new Error(res.message); } catch (error) { console.error("Form submission error", error); } - console.log("subimted"); + console.log("submited"); } return (
- Contact Us + Création de membre - Please fill out the form below and we will get back to - you shortly. + Remplissez les différents champs pour créer un membre. + Un code sera envoyé par mail à l'utilisateur. + Il pourra ensuite modifier le mot de passe de son compte avec ce code. @@ -90,6 +109,7 @@ export default function ContactFormPreview() { placeholder="John Doe" type="text" autoComplete="firstname" + {...field} /> @@ -113,6 +133,7 @@ export default function ContactFormPreview() { placeholder="John Doe" type="text" autoComplete="lastname" + {...field} /> @@ -136,6 +157,7 @@ export default function ContactFormPreview() { placeholder="johndoe@mail.com" type="email" autoComplete="email" + {...field} /> @@ -144,7 +166,36 @@ export default function ContactFormPreview() { )} /> - {/* Message Field */} + ( + + + Role + + + + + + + )} + /> + + {/* Phone Field */}