mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-02-16 10:42:08 +00:00
Implement edit beer post functionality. Register, edit and create beer post forms are now using the same layout found in components/ui/forms/BeerPostFormPageLayout. All forms are now extracted into their own components and are now found in components. Added redirectIfLoggedIn getServerSidesProp fn for login and register pages.
34 lines
1.0 KiB
TypeScript
34 lines
1.0 KiB
TypeScript
import { GetServerSidePropsContext, GetServerSidePropsResult, PreviewData } from 'next';
|
|
import { ParsedUrlQuery } from 'querystring';
|
|
import { getLoginSession } from '../config/auth/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 =
|
|
<P extends { [key: string]: any } = { [key: string]: any }>(
|
|
fn?: ExtendedGetServerSideProps<P>,
|
|
) =>
|
|
async (context: GetServerSidePropsContext) => {
|
|
try {
|
|
const { req } = context;
|
|
const session = await getLoginSession(req);
|
|
|
|
if (!fn) {
|
|
return { props: {} };
|
|
}
|
|
|
|
return await fn(context, session);
|
|
} catch (error) {
|
|
return { redirect: { destination: '/login', permanent: false } };
|
|
}
|
|
};
|
|
|
|
export default withPageAuthRequired;
|