const bcrypt = require("bcryptjs"); const User = require("../models/User"); const Student = require("../models/Student"); const jwt = require("jsonwebtoken"); const JWT_secret = "Cantileverlabs"; const messagebird = require("messagebird")("llVKD53ve6QRpbCKOHzWBADaS"); module.exports.Protected = async (req, res, next) => { res.send("Hello User"); }; module.exports.postSignup = async (req, res, next) => { try { //we need firstName , lastName , email , password as input let firstName = req.body.firstName || " "; let lastName = req.body.lastName || " "; let email = req.body.email; let password = req.body.password; let user = await User.findOne({ email: email }); if (user) { res.json({ message: "User already exist", type: "error", }); } else { const hashedPass = await bcrypt.hash(password, 12); user = new User({ firstName: firstName, lastName: lastName, email: email, password: hashedPass, isAdmin: false, }); user = await user.save(); await Student.deleteOne({ user: user._id }); let student = new Student({ user: user._id, }); student = await student.save(); user.student = student._id; await user.save(); res.json({ message: "Successfully signed Up", type: "success", }); } } catch (err) { console.log(err); } }; module.exports.postSignin = async (req, res, next) => { try { //we need email and password as input let email = req.body.email; let password = req.body.password; let user = await User.findOne({ email: email }); if (user) { const isMatched = await bcrypt.compare(password, user.password); if (isMatched) { const token = jwt.sign({ _id: user._id }, JWT_secret); res.json({ token: token, }); } else { res.json({ message: "email and password doesn't match", type: "error", }); } } else { res.json({ message: "No user with this email exists", type: "error", }); } } catch (err) { console.log(err); } }; module.exports.sendOTP = (req, res, next) => { //uNNYosMopvvCW9RTR1tRWJmYC test //llVKD53ve6QRpbCKOHzWBADaS live try { const { phoneNumber } = req.body; if (!phoneNumber) { res.status(422).json({ message: "Please Add All Required Fields" }); return; } else { messagebird.verify.create( phoneNumber, { template: "Your verification code is %token", }, function (err, response) { if (err) { console.log(err); res.status(422).json({ message: err.errors[0].description }); } else { console.log(response); res.json({ id: response.id }); } } ); } } catch (err) { console.log(err); } }; module.exports.getOTP = (req, res, next) => { try { const { id, token } = req.body; messagebird.verify.verify(id, token, function (err, response) { if (err) { console.log({ error: err.errors[0].description, id: id }); res.json({ error: err.errors[0].description, id: id }); } else { console.log(response); res.json({ message: "Code Verified" }); } }); } catch (err) { console.log(err); } }; module.exports.checkProtected = (req, res, next) => { console.log(req.user); res.json({ message: "Protected", user: req.user, }); };