export default NextAuth({
providers: [
CredentialsProvider({
id: "email-password-credential",
name: "Credentials", //NextAuth에서 만들어주는 Form 태그의 로그인 버튼에 노출될 텍스트
type: "credentials",
credentials: {
email: {
label: "email",
type: "email",
},
password: {
label: "password",
type: "password",
},
},
async authorize(credentials) {
if (!credentials)
throw new Error("잘못된 입력값으로 인한 오류 발생");
const { email, password } = credentials;
const exUser = await client.user.findUnique({
where: { email },
});
if (!exUser)
throw new Error("아이디나 비밀번호가 불일치합니다");
//저장시 bcrypt를 통해 암호화를 시켜서 비밀번호 비교시 bcrypt 이용해야함
const match = await bcrypt.compare(password, exUser.password);
if (!match) throw new Error("아이디나 비밀번호가 불일치합니다");
console.log(exUser);
return exUser;
},
}),
],
callbacks: {
async jwt({ token }) {
return token;
},
async session({ session }) {
const exUser = await client.user.findUnique({
where: {
email: session.user?.email!,
},
select: {
email: true,
name: true,
},
});
session.user = exUser!;
return session;
},
},
pages: {
signIn: "/sign-in",
},
});
'FrontEnd > Next.js' 카테고리의 다른 글
Parsing error: Cannot find module 'next/babel'Require stack: (0) | 2023.07.12 |
---|---|
[나 혼자 볼거] 소셜로그인을 위한 API 키 받기(feat. kakao, naver, google) (0) | 2023.01.23 |
[Next.js] bcrypt 를 통해 비밀번호 암호화 (0) | 2023.01.23 |
[Next.js] Next.js API 만들기 (feat. handler, withHandler) (0) | 2023.01.22 |
[Next.js] OAuth(2.0)를 통한 로그인 인증 (0) | 2023.01.10 |