70 lines
1.8 KiB
JavaScript
Executable File
70 lines
1.8 KiB
JavaScript
Executable File
const adminService = require("../models/admin");
|
|
const bcrypt = require("bcrypt");
|
|
const jwt = require("jsonwebtoken");
|
|
|
|
const login = async (req, res) => {
|
|
const { email, password } = req.body;
|
|
|
|
try {
|
|
const [foundAdmin] = await adminService.getAdminByEmail(email);
|
|
if (foundAdmin.length === 0) {
|
|
return res.status(400).json({
|
|
message: "Invalid email or password",
|
|
});
|
|
}
|
|
|
|
const isPasswordValid = await bcrypt.compare(
|
|
password,
|
|
foundAdmin[0].password
|
|
);
|
|
if (!isPasswordValid) {
|
|
return res.status(400).json({
|
|
message: "Invalid email or password",
|
|
});
|
|
}
|
|
|
|
const token = jwt.sign(
|
|
{ id: foundAdmin[0].id, role: foundAdmin[0].role },
|
|
process.env.JWT_SECRET,
|
|
{ expiresIn: "1h" }
|
|
);
|
|
|
|
return res.status(200).json({
|
|
message: "Login successful",
|
|
token,
|
|
});
|
|
} catch (error) {
|
|
console.error(error);
|
|
return res.status(500).json({
|
|
message: "Internal server error",
|
|
});
|
|
}
|
|
|
|
}
|
|
|
|
const me = async (req, res) => {
|
|
const id = req.id;
|
|
try {
|
|
console.log(id);
|
|
const [admin] = await adminService.getAdminById(id);
|
|
if (admin.length === 0) {
|
|
return res.status(404).json({
|
|
message: "Admin not found",
|
|
});
|
|
}
|
|
return res.status(200).json({
|
|
message: "Get admin successfully",
|
|
data: admin[0],
|
|
});
|
|
} catch (error) {
|
|
console.error(error);
|
|
return res.status(500).json({
|
|
message: "Internal server error",
|
|
});
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
login,
|
|
me,
|
|
} |