Update page auth HOF type definitions

Added vercel config, update packages
This commit is contained in:
Aaron William Po
2023-02-25 19:17:49 -05:00
parent 6f604b9768
commit 11b3304c54
12 changed files with 841 additions and 3429 deletions

View File

@@ -1,24 +1,32 @@
import { GetServerSideProps, GetServerSidePropsContext } from 'next';
import { GetServerSidePropsContext, GetServerSidePropsResult, PreviewData } from 'next';
import { ParsedUrlQuery } from 'querystring';
import { getLoginSession } from './session';
export type ExtendedGetServerSideProps<
P extends { [key: string]: any } = { [key: string]: any },
Q extends ParsedUrlQuery = ParsedUrlQuery,
D extends PreviewData = PreviewData,
> = (
context: GetServerSidePropsContext<Q, D>,
session: Awaited<ReturnType<typeof getLoginSession>>,
) => Promise<GetServerSidePropsResult<P>>;
const withPageAuthRequired =
(fn?: GetServerSideProps) => async (context: GetServerSidePropsContext) => {
<P extends { [key: string]: any } = { [key: string]: any }>(
fn?: ExtendedGetServerSideProps<P>,
) =>
async (context: GetServerSidePropsContext) => {
try {
const { req } = context;
await getLoginSession(req);
const session = await getLoginSession(req);
if (!fn) {
return { props: {} };
}
return await fn(context);
return await fn(context, session);
} catch (error) {
console.log(error);
return {
redirect: {
destination: '/login',
permanent: false,
},
};
return { redirect: { destination: '/login', permanent: false } };
}
};