Bläddra i källkod

Add cookie function

Owen Schwartz 9 månader sedan
förälder
incheckning
0f3dada6cc
3 ändrade filer med 21 tillägg och 23 borttagningar
  1. 10 0
      src/api/cookies.ts
  2. 9 15
      src/app/[orgId]/sites/[siteId]/layout.tsx
  3. 2 8
      src/lib/auth/verifySession.ts

+ 10 - 0
src/api/cookies.ts

@@ -0,0 +1,10 @@
+import { cookies } from "next/headers";
+
+export function authCookieHeader() {
+    const sessionId = cookies().get("session")?.value ?? null;
+    return {
+        headers: {
+            Cookie: `session=${sessionId}`
+        }
+    }
+}

+ 9 - 15
src/app/[orgId]/sites/[siteId]/layout.tsx

@@ -5,9 +5,10 @@ import { Separator } from "@/components/ui/separator"
 import { SidebarNav } from "@/components/sidebar-nav"
 import SiteProvider from "@app/providers/SiteProvider"
 import { internal } from "@app/api"
-import { cookies } from "next/headers"
 import { GetSiteResponse } from "@server/routers/site"
 import { AxiosResponse } from "axios"
+import { redirect } from "next/navigation"
+import { authCookieHeader } from "@app/api/cookies"
 
 export const metadata: Metadata = {
     title: "Forms",
@@ -42,17 +43,10 @@ export default async function SettingsLayout({ children, params }: SettingsLayou
     let site = null;
     if (params.siteId !== "create") {
         try {
-            const sessionId = cookies().get("session")?.value ?? null;
-            const res = await internal
-            .get<AxiosResponse<GetSiteResponse>>(`/site/${params.siteId}`,          {
-                headers: {
-                    Cookie: `session=${sessionId}`,
-                },
-            });
-
+            const res = await internal.get<AxiosResponse<GetSiteResponse>>(`/site/${params.siteId}`, authCookieHeader());
             site = res.data.data;
         } catch {
-            return null;
+            redirect(`/${params.orgId}/sites`)
         }
     }
 
@@ -78,7 +72,7 @@ export default async function SettingsLayout({ children, params }: SettingsLayou
                 <div className="space-y-0.5">
                     <h2 className="text-2xl font-bold tracking-tight">Settings</h2>
                     <p className="text-muted-foreground">
-                        { params.siteId == "create" ? "Create site..." : "Manage settings on " + site?.name || ""}.
+                        {params.siteId == "create" ? "Create site..." : "Manage settings on " + site?.name || ""}.
                     </p>
                 </div>
                 <Separator className="my-6" />
@@ -87,10 +81,10 @@ export default async function SettingsLayout({ children, params }: SettingsLayou
                         <SidebarNav items={sidebarNavItems} disabled={params.siteId == "create"} />
                     </aside>
                     <div className="flex-1 lg:max-w-2xl">
-                    <SiteProvider site={site}>
-                        {children}
-                    </SiteProvider>
-                        </div>
+                        <SiteProvider site={site}>
+                            {children}
+                        </SiteProvider>
+                    </div>
                 </div>
             </div>
         </>

+ 2 - 8
src/lib/auth/verifySession.ts

@@ -1,4 +1,5 @@
 import { internal } from "@app/api";
+import { authCookieHeader } from "@app/api/cookies";
 import { GetUserResponse } from "@server/routers/user";
 import { AxiosResponse } from "axios";
 import { cookies } from "next/headers";
@@ -7,14 +8,7 @@ export async function verifySession(): Promise<GetUserResponse | null> {
     const sessionId = cookies().get("session")?.value ?? null;
 
     try {
-        const res = await internal.get<AxiosResponse<GetUserResponse>>(
-            "/user",
-            {
-                headers: {
-                    Cookie: `session=${sessionId}`,
-                },
-            },
-        );
+        const res = await internal.get<AxiosResponse<GetUserResponse>>("/user", authCookieHeader());
 
         return res.data.data;
     } catch {