Revert "disable admin login"

This reverts commit eb15f4b29c.
This commit is contained in:
Thomas Ruoff
2024-09-10 23:44:24 +02:00
parent 32818b7492
commit c671b622d5
3 changed files with 44 additions and 17 deletions

View File

@@ -2,6 +2,7 @@ import { useState } from 'react'
import Head from 'next/head' import Head from 'next/head'
import Link from 'next/link' import Link from 'next/link'
import { useRouter } from 'next/router' import { useRouter } from 'next/router'
import User from './user'
const NAV_ENTRIES = [ const NAV_ENTRIES = [
{ {
@@ -59,6 +60,7 @@ export default function Header() {
</a> </a>
) )
})} })}
<User />
</nav> </nav>
<nav <nav
onClick={() => setHamburgerOpen(!hamburgerOpen)} onClick={() => setHamburgerOpen(!hamburgerOpen)}
@@ -96,6 +98,7 @@ export default function Header() {
</a> </a>
) )
})} })}
<User />
</div> </div>
</div> </div>
</div> </div>

View File

@@ -9,11 +9,11 @@ const nextConfig = {
// Optionally, add any other Next.js config below // Optionally, add any other Next.js config below
async redirects() { async redirects() {
return [ return [
// { // {
// source: '/admin', // source: '/admin',
// destination: '/nope', // destination: '/nope',
// permanent: true, // permanent: true,
// }, // },
] ]
}, },
} }

View File

@@ -4,24 +4,48 @@ import { useEffect } from 'react'
import type { AppProps } from 'next/app' import type { AppProps } from 'next/app'
import { useSession, signIn, SessionProvider } from 'next-auth/react'
import Layout from '../components/layout'; import Layout from '../components/layout';
import '../styles/index.css' import '../styles/index.css'
import '../styles/gfm.css' import '../styles/gfm.css'
function Auth({ children }) {
const { data: session, status } = useSession()
const isUser = !!session?.user
useEffect(() => {
if (status === 'loading') return // Do nothing while loading
if (!isUser) signIn() // If not authenticated, force log in
}, [isUser, status])
if (isUser) {
return children
}
// Session is being fetched, or no user.
// If no user, useEffect() will redirect.
return <div>Loading...</div>
}
export default function MyApp({ export default function MyApp({
Component, Component,
pageProps, pageProps: { session, ...pageProps },
}) { }) {
// Use the layout defined at the page level, if available
const getLayout = Component.getLayout ?? ((page) => page)
return ( return (
<div className="flex flex-col min-h-screen"> <div className="flex flex-col min-h-screen">
<Layout> <SessionProvider session={session}>
{ getLayout(<Component {...pageProps}/>) } <Layout>
<Analytics /> {Component.authenticationRequired ? (
</Layout> <Auth>
<Component {...pageProps} />
</Auth>
) : (
<Component {...pageProps} />
)}
<Analytics />
</Layout>
</SessionProvider>
<AxiomWebVitals /> <AxiomWebVitals />
</div> </div>
) )