Initial commit: added frontend and backend
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
const User = require('../models/User');
|
||||
|
||||
exports.createUser = async (req, res) => {
|
||||
try {
|
||||
const { name, phone } = req.body;
|
||||
|
||||
if (!name || !phone) {
|
||||
return res.status(400).json({ success: false, message: 'Name and phone are required' });
|
||||
}
|
||||
|
||||
// Generate a random 4 digit OTP
|
||||
const generatedOtp = Math.floor(1000 + Math.random() * 9000).toString();
|
||||
const otpExpiry = new Date(Date.now() + 10 * 60 * 1000); // 10 minutes from now
|
||||
|
||||
let user = await User.findOne({ phone });
|
||||
let isExisting = false;
|
||||
|
||||
if (user) {
|
||||
isExisting = true;
|
||||
user.otp = generatedOtp;
|
||||
user.otpExpiry = otpExpiry;
|
||||
user.name = name; // Update name just in case
|
||||
await user.save();
|
||||
} else {
|
||||
user = await User.create({
|
||||
name,
|
||||
phone,
|
||||
otp: generatedOtp,
|
||||
otpExpiry
|
||||
});
|
||||
}
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
user: {
|
||||
otp: user.otp,
|
||||
isExisting
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('Error creating user:', error);
|
||||
res.status(500).json({ success: false, message: 'Server error' });
|
||||
}
|
||||
};
|
||||
|
||||
exports.verifyOtp = async (req, res) => {
|
||||
try {
|
||||
const { phone, otp } = req.body;
|
||||
|
||||
if (!phone || !otp) {
|
||||
return res.status(400).json({ success: false, message: 'Phone and OTP required' });
|
||||
}
|
||||
|
||||
const user = await User.findOne({ phone });
|
||||
|
||||
if (!user) {
|
||||
return res.status(404).json({ success: false, message: 'User not found' });
|
||||
}
|
||||
|
||||
if (user.otp !== otp) {
|
||||
return res.status(400).json({ success: false, message: 'Invalid OTP' });
|
||||
}
|
||||
|
||||
if (user.otpExpiry < new Date()) {
|
||||
return res.status(400).json({ success: false, message: 'OTP expired' });
|
||||
}
|
||||
|
||||
// Clear OTP after successful verification
|
||||
user.otp = null;
|
||||
user.otpExpiry = null;
|
||||
await user.save();
|
||||
|
||||
res.json({ success: true, message: 'OTP verified successfully' });
|
||||
} catch (error) {
|
||||
console.error('Error verifying OTP:', error);
|
||||
res.status(500).json({ success: false, message: 'Server error' });
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user