import { Request, Response } from "express"; import { User } from "../models/User"; import { generateToken } from "../utils/generateToken"; export const register = async (req: Request, res: Response): Promise => { try { const {name, email, password} = req.body if (!name || !email || !password) { res.status(400).json({message: 'All fields are required'}); return; } const existingUser = await User.findOne({email}); if (existingUser) { res.status(409).json({message:'Email already registered'}); return; } const user = await User.create({ name, email, password }); const token = generateToken(user._id, user.email); res.status(201).json({ token, user, }) } catch (error) { console.error('Register error:', error) res.status(500).json({ message: 'Server error during registration' }) } }; export const login = async (req: Request, res: Response ): Promise => { try { const {email, password} = req.body; if (!email || !password) { res.status(400).json({ message: 'Email and password are required' }); return; } const user = await User.findOne({ email }); const isMatch = await user?.comparePassword(password) if (!user || !isMatch) { res.status(401).json({message:'Invalid Email or password'}) return; } const token = generateToken(user._id, user.email) res.json({token, user}) } catch(error) { console.error('Login error:', error) res.status(500).json({ message: 'Server error during login' }); } } export const getMe = async (req: Request, res: Response): Promise => { try { const user = req.user; if (!user) { res.status(401).json({message:'Undefined User'}) return; } res.json({ user }) } catch (error) { console.error(error) res.status(500).json({ message: 'Server Error'}) } }