HotTRDealsBackend/routes/authRoutes.js
2025-11-05 14:56:26 +00:00

80 lines
2.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const express = require("express");
const bcrypt = require("bcryptjs");
const jwt = require("jsonwebtoken");
const { PrismaClient } = require("@prisma/client");
const generateToken = require("../utils/generateToken");
const authMiddleware = require("../middleware/authMiddleware");
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,avatarUrl:user.avatarUrl },
});
} catch (err) {
console.error(err);
res
.status(500)
.json({ message: "Giriş işlemi başarısız.", error: err.message });
}
});
router.get("/me", authMiddleware, async (req, res) => {
try {
const user = await prisma.user.findUnique({
where: { id: req.user.userId },
select: { id: true, username: true, email: true,avatarUrl:true },
})
if (!user) return res.status(404).json({ error: "Kullanıcı bulunamadı" })
res.json(user)
} catch (err) {
console.error(err)
res.status(500).json({ error: "Sunucu hatası" })
}
})
module.exports = router;