75 lines
2.5 KiB
JavaScript
75 lines
2.5 KiB
JavaScript
const db = require('../config/dbConfig');
|
|
const transporter = require('../config/emailConfig');
|
|
const mailOptions = {
|
|
from: 'your-email@example.com', // Replace with your email address
|
|
to: 'recipient@example.com', // Replace with the recipient's email address
|
|
subject: 'OTP to login',
|
|
text: 'Body of the email'
|
|
};
|
|
|
|
exports.sendOtp = (req, res) => {
|
|
const email = req.body.email;
|
|
const otp = generateRandom4DigitNumber();
|
|
|
|
db.query(
|
|
'INSERT INTO email_otp (email, otp) VALUES (?, ?) ON DUPLICATE KEY UPDATE otp = ?',
|
|
[email, otp, otp],
|
|
(err, results) => {
|
|
if (err) {
|
|
console.error('Error executing query:', err);
|
|
res.status(500).json({ success: false, message: 'Internal Server Error' });
|
|
return;
|
|
}
|
|
sendMail(otp, email, req, res);
|
|
}
|
|
);
|
|
|
|
}
|
|
|
|
exports.validateOtp = async (req, res) => {
|
|
const otp = req.body.otp;
|
|
const email = req.body.email;
|
|
const otpQuery = "SELECT * from email_otp where otp = ? and email = ?";
|
|
const deleteOtpQuery = "DELETE from email_otp WHERE email = ?";
|
|
db.query(otpQuery, [otp, email], (err, results) => {
|
|
if (err) {
|
|
console.error('Error executing query:', err);
|
|
res.status(500).json({ success: false, message: 'Internal Server Error' });
|
|
return;
|
|
}
|
|
if (results.length > 0) {
|
|
db.query(deleteOtpQuery, [email], (err, results) => {
|
|
res.status(200).json({ success: true, message: 'Valid OTP' });
|
|
})
|
|
} else {
|
|
// OTP is invalid
|
|
res.status(400).json({ success: false, message: 'Invalid OTP' });
|
|
}
|
|
});
|
|
};
|
|
|
|
function sendMail(otp, email, req, res) {
|
|
const mailOptions = {
|
|
from: 'hello@communityrule.info', // Replace with your email address
|
|
to: email, // Replace with the recipient's email address
|
|
subject: 'Login code for commnunityRule',
|
|
text: 'Login code for CommunityRule: ' + otp,
|
|
};
|
|
transporter.sendMail(mailOptions, (error, info) => {
|
|
if (error) {
|
|
console.error('Error:', error);
|
|
req.status(500).json({ success: false, message: 'Internal Server Error' });
|
|
return;
|
|
}
|
|
res.json({ success: true, message: 'You must have received an email with otp successfully.' });
|
|
});
|
|
|
|
}
|
|
function generateRandom4DigitNumber() {
|
|
// Generate a random number between 1000 and 9999
|
|
const random4DigitNumber = Math.floor(Math.random() * 9000) + 1000;
|
|
return random4DigitNumber;
|
|
}
|
|
|
|
|