-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmiddleware.js
61 lines (54 loc) · 1.76 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
58
59
60
61
const Campground=require('./models/campground');
const Review=require('./models/review');
const {campgroundSchema} = require("./schema");
const { reviewSchema } = require("./schema");
const expressError = require("./utils/expressErrors");
const catchAsync= require('./utils/catchAsync');
const isLoggedIn=(req,res,next) => {
if (!req.isAuthenticated())
{
req.session.returnTo=req.originalUrl;
req.flash('error','You Must Login in!!');
return res.redirect('/login');
}
next();
}
const isAuthor = catchAsync(async (req, res, next) => {
const id = req.params.id;
const currInfo = await Campground.findById(id);
if (!currInfo.author.equals(req.user._id)) {
req.flash("error", "You do not have permission to do that!");
return res.redirect(`/campgrounds/${id}`);
}
next();
});
// /campgrounds/:id/reviews/:reviewId
const isReviewAuthor = catchAsync(async (req, res, next) => {
const { id, reviewId } = req.params;
const review = await Review.findById(reviewId);
if (!review.author.equals(req.user._id)) {
req.flash('error', 'You do not have permission to do that!');
return res.redirect(`/campgrounds/${id}`);
}
next();
});
const validateCampground = (req, res, next) => {
console.log(req.body);
const {error} = campgroundSchema.validate(req.body);
if (error) {
const msg = error.details.map((el) => el.message).join(",");
throw new expressError(msg, 400);
} else {
return next();
}
};
const validateReview = (req, res, next) => {
const { error } = reviewSchema.validate(req.body);
if (error) {
const msg = error.details.map((el) => el.message).join(",");
throw new expressError(msg, 400);
} else {
return next();
}
};
module.exports={isLoggedIn,validateCampground,isAuthor,validateReview,isReviewAuthor};