You are on page 1of 2

https://www.goconqr.

com/en-GB/quiz/39191895/ip-p1
https://www.goconqr.com/en-GB/quiz/39192122/ip-p2
https://www.goconqr.com/en-GB/quiz/39192202/ip-p3
https://www.goconqr.com/en-GB/quiz/39192271/ip-p4
https://www.goconqr.com/en-GB/quiz/39192341/ip-p5
https://www.goconqr.com/quiz/39193231/ip-3
https://www.goconqr.com/quiz/28425104/ip-quiz-1
https://www.goconqr.com/quiz/28425536/ip-quiz-2
https://www.goconqr.com/quiz/28426387/ip-quiz-3
https://www.goconqr.com/quiz/39187873/ip

https://www.goconqr.com/quiz/39138744/ip-stuff-1
https://www.goconqr.com/quiz/39138877/ip-stuff-2
https://www.goconqr.com/quiz/39138953/ip-stuff-3

npm i bcryptjs body-parser cookie-parser cors dotenv express jsonwebtoken


mongoose@5.13.9 morgan nodemon
const express= require("express");
const app= express();
const mongoose=require("mongoose");
const morgan=require("morgan");
const bodyParser=require("body-parser");
require("dotenv").config();
var cors=require('cors');

const port =process.env.PORT || 8000


app.listen(port,()=>{
cosole.log('Server running on port ${port}');
});

mongoose.connect(process.env.DATABASE, {
userNewUrlParser:true,
useUnifiedTopology:true,
useCreateIndex:true,
useFindAndModify:false
}).then(()=>console.log("DB connected"))
.catch(err)=>console.log(err));

app.use(morgan('dev'));
app.use(bodyParser.json({limit: "5mb"}));
app.use(bodyParser.urlencoded({
limit: "5mb",
extended: true
}));
app.use();
app.use();

const{email,password}=req.body;
//validation
if(!email){
return next(new ErrorResponse("Please add an email",403));
}
if(!password){
return next(new ErrorResponse("Please add a password",403));
}
//check user email
const user=await User.findOne({email});
if(!user){
return next(new ErrorResponse("Invalid credentials",403));
}
//check password
const isMatched=await user.comparePassword(password);
if(!isMatched){
return next(new ErrorResponse("Invalid credentials",403));
}

userSchema.methods.comparePassword=async function(enterPassword){
return await bcrypt.compare(enterdPassword,this.password);
}

const token=await user.getJwtToken();


res
.status(codeStatus)
.coockie('token',token,{maxAge:60*60*1000,httpOnly:true})
.json({success:true,token,user})

//return a JWT token


userSchema.methods.getJwtToken=function(){
return jwt.sign({id:this.id},process.env.JWT_SECRET,{expiresIn:3600});

//log out
exports.logout=(req,res,next)=>{
res.clearCookie('token');
res.status(200).json({
success:true,
message:"logged out"})
}

You might also like