KeySsue Beta

세상의 모든 댓글 키슈!

로그인

프론트엔드

유튜브 강좌로 프론트엔드 개발을 배우고 아이디어를 직접 개발해서 스타트업 창업을 목표로 합니다.

#Next.js 14

사용자 로그인 정보 가져오기

프로젝트 진행중 사용자 정보를 수시로 조회하게 된다. 최초에 사용자 정보를 가져와서 Header 컴포넌트에 전달해 사용하고 있다. 

/app/layout.js

import Provider from "@lib/Provider";
import Header from "@components/layout/Header";
import { getCurrentUser } from "@lib/getCurrentData";
import "@style/globals.css";

export default async function RootLayout({ children }) {
  const currentUser = await getCurrentUser();

  return (
    <html lang="kr">
      <body>
        <Provider>
            <Header currentUser={currentUser} />
            <div>{ children }</div>
        </Provider>
      </body>
    </html>
  );
}

/lib/getCurrentData.js

import { auth } from "@app/auth";
import prisma from '@prisma/prisma'

export async function getCurrentUser() {
  try {
    const session = await auth();

    if (!session?.user?.email) {
      return null;
    }

    const currentUser = await prisma.user.findUnique({
      where: {
        id: session.user.id,
      },
      include: {
        stamps: true,
      },
    })

    if (!currentUser) {
      return null
    }

    return {
      ...currentUser,
      createdAt: currentUser.createdAt.toISOString(),
      updatedAt: currentUser.updatedAt.toISOString(),
      emailVerified: currentUser.emailVerified?.toISOString() || null,
    };
  } catch (error) {
    return null
  }
}
작성자 @하보리·0 ·9달 전
채널을 구독하면 구독한 채널에 키워드를 등록할 수 있습니다.
..

Comments

키워드 내용에 대한 서로의 생각을 공유하고 댓글로 응원해주세요.

등록된 댓글이 없습니다.
유튜브 강좌로 프론트엔드 개발을 배우고 아이디어를 직접 개발해서 스타트업 창업을 목표로 합니다.
나만의 채널을 선점해보세요.

@ KEYSSUE