const User = require("../models/User"); const jwt = require("jsonwebtoken"); const generateToken = (id) => { return jwt.sign({ id }, process.env.JWT_SECRET, { expiresIn: "1h" }); }; //Register const registerUser = async (req, res) => { const { username, email, password } = req.body; try { const userExists = await User.findOne({ email }); if (userExists) return res.status(400).json({ message: "User already exists" }); const user = await User.create({ username, email, password }); res.status(201).json({ _id: user._id, username: user.username, email: user.email, token: generateToken(user._id), }); } catch (error) { console.error("Error in registerUser:", error.message); res.status(500).json({ message: "Server error" }); } }; //Login const loginUser = async (req, res) => { const { email, password } = req.body; try { const user = await User.findOne({ email }); if (!user) return res.status(400).json({ message: "Invalid credentials" }); const isMatch = await user.matchPassword(password); if (!isMatch) return res.status(400).json({ message: "Invalid credentials" }); res.status(200).json({ _id: user._id, username: user.username, email: user.email, token: generateToken(user._id), message: "success", }); } catch (error) { res.status(500).json({ message: "Server error" }); } }; const getProfile = async (req, res) => { res.json(req.user); }; module.exports = { registerUser, loginUser, getProfile };