프리즈마 세팅팅
This commit is contained in:
48
app/api/users/login/route.ts
Normal file
48
app/api/users/login/route.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
import { NextRequest, NextResponse } from 'next/server';
|
||||
import { prisma } from '@/lib/prisma';
|
||||
import bcrypt from 'bcryptjs';
|
||||
|
||||
// POST - 로그인
|
||||
export async function POST(request: NextRequest) {
|
||||
try {
|
||||
const body = await request.json();
|
||||
const { email, password } = body;
|
||||
|
||||
if (!email || !password) {
|
||||
return NextResponse.json({ error: '이메일과 비밀번호를 입력해주세요.' }, { status: 400 });
|
||||
}
|
||||
|
||||
// 사용자 조회
|
||||
const user = await prisma.user.findUnique({
|
||||
where: { email },
|
||||
});
|
||||
|
||||
if (!user) {
|
||||
return NextResponse.json({ error: '아이디 또는 비밀번호가 올바르지 않습니다.' }, { status: 401 });
|
||||
}
|
||||
|
||||
// 계정 활성화 확인
|
||||
if (!user.isActive) {
|
||||
return NextResponse.json({ error: '비활성화된 계정입니다.' }, { status: 403 });
|
||||
}
|
||||
|
||||
// 비밀번호 확인
|
||||
const isPasswordValid = await bcrypt.compare(password, user.password);
|
||||
|
||||
if (!isPasswordValid) {
|
||||
return NextResponse.json({ error: '아이디 또는 비밀번호가 올바르지 않습니다.' }, { status: 401 });
|
||||
}
|
||||
|
||||
// 비밀번호 제외하고 사용자 정보 반환
|
||||
const { password: _, ...userWithoutPassword } = user;
|
||||
|
||||
return NextResponse.json({
|
||||
user: userWithoutPassword,
|
||||
message: '로그인 성공',
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('Error during login:', error);
|
||||
return NextResponse.json({ error: '로그인 중 오류가 발생했습니다.' }, { status: 500 });
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user