Next.js Discord

Discord Forum

Need help rendering a page if a user has a certain clearance in their session data

Unanswered
Pacific sand lance posted this in #help-forum
Open in Discord
Pacific sand lanceOP
Hey i was trying to render certain page depending if a user session has
isAdmin = true

but it returns undefined when it clearly outputs the value afterwards

Here is my admin page.js & layout.js
// /admin/page.js
"use client"

import AdminNav from "@/components/admincomponents/adminnavbar";
import Dashboard from "@/components/admincomponents/dashboard";
import { useSession } from "next-auth/react";
import { redirect } from "next/navigation";

export default function Admin() {
    
    const {data: session, status} = useSession()

    if (status === "authenticated") {
        const boolAdmin = session?.user.isadmin

        console.log('is Admin :', boolAdmin)
    
        if(boolAdmin == true) {
            return (
                <AdminNav adminname={session?.user.fullname} />
            )
        }
        return (
            redirect('/')
        )
    }
}


// /admin/layout.js
import '../globals.css'
import Favicon from '../../public/favicon.ico'
import localFont from 'next/font/local'
import { config } from '@fortawesome/fontawesome-svg-core'
import '@fortawesome/fontawesome-svg-core/styles.css'
import { getServerSession } from 'next-auth'
import SessProv from '@/components/SessionProvider'

require('dotenv').config()
config.autoAddCss = false
 
const myFont = localFont({ src: '../../public/fonts/Bicyclette-Bold.ttf' })

export const metadata = {
  title: 'Admin',
  description: 'description',
  icons: [{ rel: 'icon', url: Favicon.src }] 
}

export default async function AdminLayout({ children }) {
  const session = await getServerSession()
  return (
    <html lang="en">
      <body className={myFont.className}>
        <SessProv session={session}>{children}</SessProv>
        </body>
    </html>
  )
}


My session output
is Admin : undefined
{
  user: {
    name: undefined,
    email: 'email',
    image: undefined,
    username: 'lacrisun',
    fullname: 'name',
    phone: 'numbers',
    isadmin: true
  }
}

0 Replies