plane/apps/app/lib/hoc/withAuthWrapper.tsx

34 lines
885 B
TypeScript
Raw Normal View History

import React from "react";
2022-11-19 14:21:26 +00:00
// next
import type { NextPage } from "next";
// redirect
import redirect from "lib/redirect";
const withAuth = (WrappedComponent: NextPage, getBackToSameRoute: boolean = true) => {
2022-11-19 14:21:26 +00:00
const Wrapper: NextPage<any> = (props) => {
return <WrappedComponent {...props} />;
};
Wrapper.getInitialProps = async (ctx) => {
const isServer = typeof window === "undefined";
const cookies = isServer ? ctx?.req?.headers.cookie : document.cookie;
const token = cookies?.split("accessToken=")?.[1]?.split(";")?.[0];
if (!token) {
if (getBackToSameRoute) redirect(ctx, "/signin?next=" + ctx?.asPath);
else redirect(ctx, "/signin");
}
const pageProps =
WrappedComponent.getInitialProps && (await WrappedComponent.getInitialProps(ctx));
return { ...pageProps };
2022-11-19 14:21:26 +00:00
};
return Wrapper;
};
export default withAuth;