diff --git a/server/routers/external.ts b/server/routers/external.ts index 7fd0c69..2cb7ba6 100644 --- a/server/routers/external.ts +++ b/server/routers/external.ts @@ -46,10 +46,10 @@ authenticated.put("/org/:orgId/site", verifyOrgAccess, site.createSite); authenticated.get("/org/:orgId/sites", verifyOrgAccess, site.listSites); authenticated.get("/org/:orgId/site/:niceId", verifyOrgAccess, site.getSite); -authenticated.get("/site/siteId/:siteId", verifySiteAccess, site.getSite); -authenticated.get("/site/siteId/:siteId/roles", verifySiteAccess, site.listSiteRoles); -authenticated.post("/site/siteId/:siteId", verifySiteAccess, site.updateSite); -authenticated.delete("/site/siteId/:siteId", verifySiteAccess, site.deleteSite); +authenticated.get("/site/:siteId", verifySiteAccess, site.getSite); +authenticated.get("/site/:siteId/roles", verifySiteAccess, site.listSiteRoles); +authenticated.post("/site/:siteId", verifySiteAccess, site.updateSite); +authenticated.delete("/site/:siteId", verifySiteAccess, site.deleteSite); authenticated.put( "/org/:orgId/site/:siteId/resource", diff --git a/src/app/[orgId]/sites/[niceId]/components/create-site.tsx b/src/app/[orgId]/sites/[niceId]/components/CreateSite.tsx similarity index 99% rename from src/app/[orgId]/sites/[niceId]/components/create-site.tsx rename to src/app/[orgId]/sites/[niceId]/components/CreateSite.tsx index 936506e..cc6fd96 100644 --- a/src/app/[orgId]/sites/[niceId]/components/create-site.tsx +++ b/src/app/[orgId]/sites/[niceId]/components/CreateSite.tsx @@ -18,7 +18,7 @@ import { FormMessage, } from "@/components/ui/form" import { Input } from "@/components/ui/input" -import { generateKeypair } from "./wireguard-config"; +import { generateKeypair } from "./wireguardConfig"; import React, { useState, useEffect } from "react"; import { api } from "@/api"; import { useParams } from "next/navigation"; diff --git a/src/app/[orgId]/sites/[niceId]/components/GeneralForm.tsx b/src/app/[orgId]/sites/[niceId]/components/GeneralForm.tsx new file mode 100644 index 0000000..d2fd5f2 --- /dev/null +++ b/src/app/[orgId]/sites/[niceId]/components/GeneralForm.tsx @@ -0,0 +1,174 @@ +"use client" + +import Link from "next/link" +import { zodResolver } from "@hookform/resolvers/zod" +import { useFieldArray, useForm } from "react-hook-form" +import { z } from "zod" + +import { cn } from "@/lib/utils" +import { toast } from "@/hooks/use-toast" + +import { Button } from "@/components/ui/button" +import { + Form, + FormControl, + FormDescription, + FormField, + FormItem, + FormLabel, + FormMessage, +} from "@/components/ui/form" +import { Input } from "@/components/ui/input" +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select" +import { Textarea } from "@/components/ui/textarea" +import { useSiteContext } from "@app/hooks/useSiteContext" +import api from "@app/api" + +const GeneralFormSchema = z.object({ + name: z.string() + // email: z + // .string({ + // required_error: "Please select an email to display.", + // }) + // .email(), + // bio: z.string().max(160).min(4), + // urls: z + // .array( + // z.object({ + // value: z.string().url({ message: "Please enter a valid URL." }), + // }) + // ) + // .optional(), +}) + +type GeneralFormValues = z.infer + +export function GeneralForm() { + const { site, updateSite } = useSiteContext(); + + const form = useForm({ + resolver: zodResolver(GeneralFormSchema), + defaultValues: { + name: site?.name + }, + mode: "onChange", + }) + + // const { fields, append } = useFieldArray({ + // name: "urls", + // control: form.control, + // }) + + async function onSubmit(data: GeneralFormValues) { + await updateSite({ name: data.name }); + } + + return ( +
+ + ( + + Name + + + + + This is the display name of the site. + + + + )} + /> + {/* ( + + Email + + + You can manage verified email addresses in your{" "} + email settings. + + + + )} + /> + ( + + Bio + +