-
Notifications
You must be signed in to change notification settings - Fork 0
/
middleware.js
57 lines (50 loc) · 1.84 KB
/
middleware.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
const {campgroundSchema,reviewSchema}=require('./schemas')
const ExpressError=require('./utils/ExpressError');
const Campground=require('./models/campground')
const Review=require('./models/reviews');
const isLoggedIn=(req,res,next)=>{
if(!req.isAuthenticated()){
req.flash("error","You must be loginned")
return res.redirect('/user/login')
}
next();
}
const validateCampground=(req,res,next)=>{
const results=campgroundSchema.validate(req.body);
if(results.error){
const msg=results.error.details.map(el=>el.message).join(',');
throw new ExpressError(msg,400);
res.send('eroor')
} else{
next();
}
}
const validateReview=(req,res,next)=>{
const results=reviewSchema.validate(req.body);
if(results.error){
const msg=results.error.details.map(el=>el.message).join(',');
throw new ExpressError(msg,400);
} else{
next();
}
}
const isAuthor=async(req,res,next)=>{
const {id}=req.params
const camground=await Campground.findById(id);
if(!camground.author.equals(req.user._id)){
req.flash('error',"NIN CAMPGROUND JOTHE ENADRU MADKO BERE AVRDU YAKE UNAK BARTYA")
return res.redirect(`/campground/${id}`);
}
next();
}
const isReviewAuthor=async(req,res,next)=>{
const {id,reviewid}=req.params;
const camground=await Campground.findById(id);
const review=await Review.findById(reviewid).populate('author');
if((!review.author.equals(req.user._id))&&(!camground.author.equals(req.user._id))){
req.flash('error',"NIN CAMPGROUND JOTHE ENADRU MADKO BERE AVRDU YAKE UNAK BARTYA")
return res.redirect(`/campground/${id}`);
}
next();
}
module.exports={isLoggedIn,validateCampground,isAuthor,validateReview,isReviewAuthor};