Integrate ProfileDropdown component, update layout to include user menu, and add Keycloak logout API route.
This commit is contained in:
11
main-website/app/api/logout/route.ts
Normal file
11
main-website/app/api/logout/route.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import {NextResponse} from 'next/server'
|
||||
|
||||
export async function POST() {
|
||||
const keycloakLogoutUrl = process.env.KEYCLOAK_LOGOUT_URL
|
||||
|
||||
if (!keycloakLogoutUrl) {
|
||||
return new NextResponse('Missing KEYCLOAK_LOGOUT_URL env variable', {status: 500})
|
||||
}
|
||||
|
||||
return NextResponse.redirect(keycloakLogoutUrl, 302)
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
import type {Metadata} from "next";
|
||||
import {Geist, Geist_Mono} from "next/font/google";
|
||||
import "./globals.css";
|
||||
import ProfileDropdown from '@/components/ProfileDropdown'
|
||||
import React from "react"; // <- Add this line
|
||||
|
||||
const geistSans = Geist({
|
||||
variable: "--font-geist-sans",
|
||||
@@ -24,10 +26,13 @@ export default function RootLayout({
|
||||
}>) {
|
||||
return (
|
||||
<html lang="en">
|
||||
<body
|
||||
className={`${geistSans.variable} ${geistMono.variable} antialiased`}
|
||||
>
|
||||
{children}
|
||||
<body className={`${geistSans.variable} ${geistMono.variable} antialiased`}>
|
||||
<div className="min-h-screen bg-zinc-900 text-white">
|
||||
<header className="flex justify-end p-4 border-b border-zinc-800">
|
||||
<ProfileDropdown/>
|
||||
</header>
|
||||
{children}
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user