mammoth-coat-82259
08/22/2023, 2:38 PMimport type {NextRequest} from 'next/server'
import {NextResponse} from 'next/server'
import {edgeConfig} from "@ory/integrations/next"
import {Configuration, FrontendApi} from "@ory/client"
import store from "@/redux/store";
import {setSessionData} from "@/redux/sessionSlice";
const ory = new FrontendApi(new Configuration(edgeConfig))
// This function can be marked `async` if using `await` inside
export async function middleware(request: NextRequest) {
try{
if (request.nextUrl.pathname === `/`) {
return NextResponse.redirect(`${process.env.SERVER_URL}${edgeConfig.basePath}/ui/login`)
}
const session : any = await ory.toSession()
if (session.active) {
const dispatch = store.dispatch
dispatch(setSessionData({
sessionId: session.id,
userEmail: session.identity.traits.email,
logoutUrl: session.logoutUrl
}))
return NextResponse.next()
}
}catch (e) {
console.log("No session detected, redirecting to login")
}
return NextResponse.rewrite(`${process.env.SERVER_URL}${edgeConfig.basePath}/ui/login`)
}
// Protected routes
export const config = {
matcher: [
"/",
"/dashboard",
],
}