Spaces:
				
			
			
	
			
			
		Paused
		
	
	
	
			
			
	
	
	
	
		
		
		Paused
		
	| import { withIronSessionApiRoute, withIronSessionSsr } from "iron-session/next"; | |
| import { GetServerSideProps, NextApiHandler } from "next"; | |
| import { IncomingMessage, ServerResponse } from "http"; | |
| import { NextApiRequestCookies } from "next/dist/server/api-utils"; | |
| export const sessionOptions = { | |
| password: process.env.SECRET_COOKIE_PASSWORD as string, | |
| cookieName: "session", | |
| cookieOptions: { | |
| secure: process.env.NODE_ENV === "production", | |
| }, | |
| }; | |
| export function withSessionApiRoute(handler: NextApiHandler) { | |
| return withIronSessionApiRoute(handler, sessionOptions); | |
| } | |
| export function withSessionSsr(handler: GetServerSideProps) { | |
| return withIronSessionSsr(handler, sessionOptions); | |
| } | |
| export const verifySession = ( | |
| req: IncomingMessage & { cookies: NextApiRequestCookies }, | |
| res: ServerResponse | |
| ) => { | |
| const user = req.session.user; | |
| if (!user) { | |
| res.setHeader("location", "/"); | |
| res.statusCode = 302; | |
| res.end(); | |
| return { props: {} }; | |
| } | |
| return { user }; | |
| }; | |
| export const redirect = ( | |
| location: string, | |
| req: IncomingMessage & { cookies: NextApiRequestCookies }, | |
| res: ServerResponse | |
| ) => { | |
| res.setHeader("location", location); | |
| res.statusCode = 302; | |
| res.end(); | |
| }; | |
