const express = require("express"); const jwt = require("jsonwebtoken"); const { User } = require("../models"); // Import from models/index.js to get models with associations const router = express.Router(); router.post("/register", async (req, res) => { try { const { username, email, password, firstName, lastName, phone } = req.body; const existingUser = await User.findOne({ where: { [require("sequelize").Op.or]: [{ email }, { username }], }, }); if (existingUser) { return res.status(400).json({ error: "User already exists" }); } const user = await User.create({ username, email, password, firstName, lastName, phone, }); const token = jwt.sign({ id: user.id }, process.env.JWT_SECRET, { expiresIn: "7d", }); res.status(201).json({ user: { id: user.id, username: user.username, email: user.email, firstName: user.firstName, lastName: user.lastName, }, token, }); } catch (error) { res.status(500).json({ error: error.message }); } }); router.post("/login", async (req, res) => { try { const { email, password } = req.body; const user = await User.findOne({ where: { email } }); if (!user || !(await user.comparePassword(password))) { return res.status(401).json({ error: "Invalid credentials" }); } const token = jwt.sign({ id: user.id }, process.env.JWT_SECRET, { expiresIn: "7d", }); res.json({ user: { id: user.id, username: user.username, email: user.email, firstName: user.firstName, lastName: user.lastName, }, token, }); } catch (error) { res.status(500).json({ error: error.message }); } }); module.exports = router;