const express = require("express"); const bcrypt = require("bcryptjs"); const jwt = require("jsonwebtoken"); const { PrismaClient } = require("@prisma/client"); const generateToken = require("../utils/generateToken"); const router = express.Router(); const prisma = new PrismaClient(); // Kayıt ol router.post("/register", async (req, res) => { try { const { username, email, password } = req.body; const existingUser = await prisma.user.findUnique({ where: { email } }); if (existingUser) return res.status(400).json({ message: "Bu e-posta zaten kayıtlı." }); const hashedPassword = await bcrypt.hash(password, 10); const user = await prisma.user.create({ data: { username, email, passwordHash: hashedPassword }, }); const token = generateToken(user.id); res.json({ token, user: { id: user.id, username: user.username, email: user.email } }); } catch (err) { res.status(500).json({ message: "Kayıt işlemi başarısız.", error: err.message }); } }); // Giriş yap router.post("/login", async (req, res) => { try { const { email, password } = req.body; const user = await prisma.user.findUnique({ where: { email } }); if (!user) return res.status(400).json({ message: "Kullanıcı bulunamadı." }); const isMatch = await bcrypt.compare(password, user.passwordHash); if (!isMatch) return res.status(401).json({ message: "Şifre hatalı." }); // userId olarak imzala const token = generateToken(user.id); res.json({ token, user: { id: user.id, username: user.username, email: user.email }, }); } catch (err) { console.error(err); res .status(500) .json({ message: "Giriş işlemi başarısız.", error: err.message }); } }); module.exports = router;