✨ Add login redirection
* ✨ Add login redirection * 🚑 Fix cross site scripting using server side regex validation * ✅ Add unit test
This commit is contained in:
34
src/tools/server/loginBuilder.ts
Normal file
34
src/tools/server/loginBuilder.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import {
|
||||
GetServerSideProps,
|
||||
GetServerSidePropsContext,
|
||||
GetServerSidePropsResult,
|
||||
PreviewData,
|
||||
} from 'next';
|
||||
import { Session } from 'next-auth';
|
||||
import { ParsedUrlQuery } from 'querystring';
|
||||
|
||||
export const checkForSessionOrAskForLogin = (
|
||||
context: GetServerSidePropsContext<ParsedUrlQuery, PreviewData>,
|
||||
session: Session | null,
|
||||
accessCallback: () => boolean,
|
||||
): GetServerSidePropsResult<any> | undefined => {
|
||||
if (!session?.user) {
|
||||
console.log('detected logged out user!');
|
||||
return {
|
||||
props: {},
|
||||
redirect: {
|
||||
destination: `/auth/login?redirectAfterLogin=${context.resolvedUrl}`,
|
||||
permanent: false,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
if (!accessCallback()) {
|
||||
return {
|
||||
props: {},
|
||||
notFound: true
|
||||
}
|
||||
}
|
||||
|
||||
return undefined;
|
||||
};
|
||||
Reference in New Issue
Block a user