create-nodeapi-backend
Version:
A powerful Node.js backend boilerplate with Express, MongoDB, Firebase, JWT auth, Nodemailer, cron jobs, input validation (Joi), and serverless support for Vercel. Scaffold a full-featured API backend in seconds.
48 lines (40 loc) • 1.2 kB
JavaScript
const { User } = require("../../model/index");
const bcrypt = require("bcrypt");
const generateToken = require("../../utils/genToken");
const loginUser = async ({ email, password }) => {
try {
const user = await User.findOne(
{ email },
"email password googleId role isVerified"
);
if (!user) {
return { code: 404, message: "User not found" };
}
if (user.googleId) {
return { code: 406, message: "Please login with Google" };
}
if (!(await bcrypt.compare(password, user.password))) {
return { code: 406, message: "Incorrect Password" };
}
const token = await generateToken({
id: user._id.toString(),
email: user.email,
role: user.role,
type: "access"
});
return {
code: user.isVerified ? 200 : 203,
message: `Login Successful, ${
user.isVerified ? "Verified" : "Please Verify your account"
}`,
data: {
id: user._id.toString(),
email: user.email,
token
}
};
} catch (error) {
return { code: 500, message: "Internal Server Error", error };
}
};
module.exports = loginUser;