fcsc_ipi_backend/app/controllers/auth.controller.js

48 lines
1.6 KiB
JavaScript

const db = require("../models");
const bcrypt = require("bcryptjs");
const jwt = require("jsonwebtoken");
require("dotenv").config();
const User = db.user;
// Register new user
exports.register = async (req, res) => {
try {
const { name, email, password } = req.body;
if (!name || !email || !password)
return res.status(400).send({'status':"failed",'message':"All fields required",'data': ""});
const existing = await User.findOne({ where: { email } });
if (existing) res.status(400).send({'status':"failed",'message':"Email already used",'data': ""});
const hashedPassword = await bcrypt.hash(password, 10);
const newUser = await User.create({ name, email, password: hashedPassword });
res.status(201).send({'status':"success",'message':"User registered successfully",'data': newUser });
} catch (err) {
res.status(500).send({'status':"failed",'message':err.message });
}
};
// Login user
exports.login = async (req, res) => {
try {
const { email, password } = req.body;
const user = await User.findOne({ where: { email } });
if (!user) res.status(404).send({'status':"failed",'message':"User not found",'data': ""});
const validPass = await bcrypt.compare(password, user.password);
if (!validPass) res.status(401).send({'status':"failed",'message':"Invalid password",'data': ""});
const token = jwt.sign({ id: user.id, email: user.email }, process.env.JWT_SECRET, {
expiresIn: "6h",
});
res.status(200).send({'status':"success",'message':"Login successful",'data': token });
} catch (err) {
res.status(500).send({'status':"failed",'message':err.message });
}
};