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
JavaScript
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",
});
};