diff --git a/pages/_app.tsx b/pages/_app.tsx index e2964dde..8b0b9009 100644 --- a/pages/_app.tsx +++ b/pages/_app.tsx @@ -1,8 +1,9 @@ import '../styles/globals.css'; import {createTelemetryClient, TelemetryProvider} from '../lib/telemetry'; import { Provider } from 'next-auth/client'; +import type { AppProps } from "next/app" -function MyApp({ Component, pageProps }) { +function MyApp({ Component, pageProps }: AppProps) { return ( diff --git a/pages/settings/teams.tsx b/pages/settings/teams.tsx index 36b57984..21df9f4d 100644 --- a/pages/settings/teams.tsx +++ b/pages/settings/teams.tsx @@ -1,8 +1,10 @@ +import { GetServerSideProps } from "next" import Head from 'next/head'; import Shell from '../../components/Shell'; import SettingsShell from '../../components/Settings'; import { useEffect, useState } from 'react'; -import { useSession } from 'next-auth/client'; +import type { Session } from "next-auth" +import { useSession, getSession } from 'next-auth/client'; import { UsersIcon, } from "@heroicons/react/outline"; @@ -165,3 +167,15 @@ export default function Teams() { ); } + +// Export the `session` prop to use sessions with Server Side Rendering +export const getServerSideProps: GetServerSideProps<{session: Session | null}> = async (context) => { + const session = await getSession(context); + if (!session) { + return { redirect: { permanent: false, destination: '/auth/login' } }; + } + + return { + props: { session } + } +}