UNPKG

feature-hub

Version:

Feature-based CLI tool to install backend features easily like auth, cron-job, file-upload, etc.

87 lines (85 loc) 2.09 kB
import userModel from "../models/user.model.js"; export const signup = async (req, res) => { const { name, email, password } = req.body; try { const existingUser = await userModel.findByEmail(email); if (existingUser) { return res.status(400).json({ success: false, message: "User already exists", }); } const user = await userModel.create({ name, email, password, }); user.save(); const token = await user.getSignedJwtToken(); console.log(token); res.cookie("token", token, { httpOnly: true }).status(201).json({ success: true, user, }); } catch (error) { console.log(error.message); } }; export const signin = async (req, res) => { const { email, password } = req.body; if (!email && !password) { return res.status(400).json({ success: false, message: "Please provide email and password", }); } try { const user = await userModel.findByEmail(email); if (!user) return res.json({ success: false, message: "User not found", }); const isMatchPassword = await user.matchPassword(password); if (!isMatchPassword) return res.json({ success: false, message: "Invalid password", }); const token = await user.getSignedJwtToken(); res.cookie("token", token, { httpOnly: true }).status(201).json({ success: true, user, }); } catch (error) { console.log(error.message); } }; export const profile = async (req, res) => { if (!req.user) { return res.status(401).json({ success: false, message: "Unauthorized", }); } res.status(200).json({ success: true, user: req.user, }); }; export const logout = async (req, res) => { if (!req.user) { return res.status(401).json({ success: false, message: "Unauthorized", }); } res.cookie("token", null, { expires: new Date(Date.now()), httpOnly: true, }); res.status(200).json({ success: true, message: "Logout successfully", }); };