From 50769ed32f92b1d487a1c8f7abc513155d73b160 Mon Sep 17 00:00:00 2001 From: Daniel Flanagan Date: Thu, 20 Oct 2022 22:33:33 -0500 Subject: [PATCH] Nasty hack for redirect on login/logout --- routes/_middleware.tsx | 14 +------------- routes/login.tsx | 16 ++++++++++++++-- routes/logout.tsx | 17 +++++++++++++++-- 3 files changed, 30 insertions(+), 17 deletions(-) diff --git a/routes/_middleware.tsx b/routes/_middleware.tsx index 31ab664..99c2f61 100644 --- a/routes/_middleware.tsx +++ b/routes/_middleware.tsx @@ -1,4 +1,4 @@ -import { LayoutProps, MiddlewareHandlerContext } from "$fresh/server.ts"; +import { MiddlewareHandlerContext } from "$fresh/server.ts"; import { deleteCookie, getCookies } from "$std/http/cookie.ts"; import { getUserFromNonExpiredLoginToken } from "@/db/mod.ts"; import { type ContextState, type PublicUser, type User } from "@/types.ts"; @@ -14,22 +14,10 @@ function toPublicUser(user: User): PublicUser { return publicUser; } -function Layout({ state, Component }: LayoutProps) { - return ( - <> - {state.something - ?

Oh my! You said something!

- :

You aren't saying anything.

} - - - ); -} - async function currentUser( request: Request, context: MiddlewareHandlerContext, ) { - context.layout = Layout; let hasBadAuthCookie = false; const { lsauth } = getCookies(request.headers); log.debug("lsauth cookie:", lsauth); diff --git a/routes/login.tsx b/routes/login.tsx index 88b927b..e0c35f8 100644 --- a/routes/login.tsx +++ b/routes/login.tsx @@ -41,9 +41,21 @@ export const handler: Handlers = { if (!token || !token.bytes) throw "failed to create token"; const cookie = base64.encode(token.bytes); + const newUrl = new URL(request.url); + newUrl.pathname = "/dashboard"; const response = await context.render(user.id); - setCookie(response.headers, { name: "lsauth", value: cookie }); - return response; + const headers = new Headers(response.headers); + setCookie(headers, { name: "lsauth", value: cookie }); + headers.set("location", newUrl.toString()); + const actualResponse = new Response(response.body, { + ...response, + headers: headers, + status: 302, + }); + + // response.headers.set("location", newUrl.toString()); + // response.status = 302; + return actualResponse; }, }; diff --git a/routes/logout.tsx b/routes/logout.tsx index f16d283..a4e74d3 100644 --- a/routes/logout.tsx +++ b/routes/logout.tsx @@ -10,9 +10,22 @@ export const handler: Handlers = { if (lsauth) { console.log("deleteToken:", await deleteToken(lsauth)); } + + const newUrl = new URL(request.url); + newUrl.pathname = "/login"; const response = await context.render(); - deleteCookie(response.headers, "lsauth"); - return response; + + const headers = new Headers(response.headers); + deleteCookie(headers, "lsauth"); + headers.set("location", newUrl.toString()); + + const actualResponse = new Response(response.body, { + ...response, + headers: headers, + status: 302, + }); + + return actualResponse; }, };