Cantilever-Labs/.history/controllers/auth_20210503150708.js

103 lines
2.7 KiB
JavaScript

const bcrypt = require('bcryptjs') ;
const User = require('../models/User') ;
const Student = require('../models/Student') ;
const jwt = require('jsonwebtoken');
const JWT_secret = "Cantileverlabs";
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.checkProtected = (req , res , next) => {
console.log(req.user);
res.json({
message:"Protected" ,
user : req.user
})
}