-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
var express = require("express"); | ||
var app = express(); | ||
var bodyParser = require("body-parser"); | ||
var mongoose = require("mongoose"); | ||
var passport = require("passport"); | ||
var LocalStrategy = require("passport-local"); | ||
var methodOverride = require("method-override"); | ||
var commentRoutes = require("./routes/comments"); | ||
var campgroundRoutes = require("./routes/campgrounds"); | ||
var indexRoutes = require("./routes/index"); | ||
var flash = require("connect-flash"); | ||
app.use(bodyParser.urlencoded({extended:true})); | ||
|
||
var Comment = require("./models/comments") | ||
var Campground = require("./models/campground"); | ||
var User = require("./models/user"); | ||
var seedDB = require("./seeds"); | ||
app.use(express.static(__dirname + '/public')) | ||
app.set("view engine","ejs"); | ||
mongoose.connect("mongodb://localhost/yelp_camp"); | ||
app.use(flash()); | ||
// Seed the database | ||
// seedDB(); | ||
|
||
app.locals.moment = require("moment"); | ||
//PASSPORT CONFIGURATION | ||
app.use(require("express-session")({ | ||
secret: "Shrey will crack GSOC in 2020", | ||
resave: false, | ||
saveUninitialized: false | ||
})); | ||
app.use(passport.initialize()); | ||
app.use(passport.session()); | ||
app.use(methodOverride("_method")); | ||
|
||
passport.use(new LocalStrategy(User.authenticate())); | ||
passport.serializeUser(User.serializeUser()); | ||
passport.deserializeUser(User.deserializeUser()); | ||
//ADDS THE CURRENT SIGNED IN USER TO ALL THE EJS FILES INCLUDING HEADER | ||
app.use(function(req,res,next){ | ||
res.locals.currentUser = req.user; | ||
res.locals.error = req.flash("error"); | ||
res.locals.success = req.flash("success"); | ||
next(); | ||
}); | ||
app.use(express.static("public")); | ||
|
||
|
||
|
||
//requiring routes | ||
app.use(indexRoutes); | ||
app.use("/campgrounds",campgroundRoutes); | ||
app.use("/campgrounds/:id/comments",commentRoutes); | ||
|
||
|
||
|
||
|
||
app.listen(3000,function(){ | ||
console.log("Yelp Camp has started at port 3000") | ||
}); | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
var middlewareObj = {}; | ||
var Campground = require("../models/campground") | ||
var Comment = require("../models/comments") | ||
middlewareObj.checkCampgroundOwnership = function(req,res,next) | ||
{ | ||
if(req.isAuthenticated()) | ||
{ | ||
Campground.findById(req.params.id,function(err,foundCampground){ | ||
if(err || !foundCampground){ | ||
req.flash("error","Campground Not Found"); | ||
console.log(err); | ||
res.redirect("back") | ||
} | ||
else{ | ||
if(foundCampground.author.id.equals(req.user._id)) | ||
{ | ||
next(); | ||
} | ||
else | ||
{ | ||
req.flash("error","You don't have permission to do that") | ||
res.redirect("back"); | ||
} | ||
} | ||
|
||
}) | ||
} | ||
}; | ||
|
||
|
||
middlewareObj.checkCommentOwnership = function(req,res,next) | ||
{ | ||
if(req.isAuthenticated()) | ||
{ | ||
Comment.findById(req.params.id2,function(err,foundComment){ | ||
if(err || !foundComment){ | ||
console.log(err); | ||
req.flash("error","Comment not found") | ||
res.redirect("back") | ||
} | ||
else{ | ||
if(foundComment.author.id.equals(req.user._id)) | ||
{ | ||
next(); | ||
} | ||
else{ | ||
res.redirect("back"); | ||
} | ||
} | ||
}) | ||
} | ||
|
||
}; | ||
middlewareObj.isLoggedIn = function(req,res,next){ | ||
if(req.isAuthenticated()){ | ||
return next(); | ||
} | ||
else{ | ||
req.flash("error","You need to be logged in to do that") | ||
res.redirect("/login"); | ||
} | ||
} | ||
module.exports = middlewareObj; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
var mongoose = require("mongoose"); | ||
var campgroundSchema = new mongoose.Schema({ | ||
name: String, | ||
img: String, | ||
desc: String, | ||
price: String, | ||
author: { | ||
id:{ | ||
type: mongoose.Schema.Types.ObjectId, | ||
ref: "User" | ||
}, | ||
username: String | ||
}, | ||
comments: [ | ||
{ | ||
type: mongoose.Schema.Types.ObjectId, | ||
ref: "Comment" | ||
} | ||
|
||
], | ||
createdAt: { | ||
type: Date, | ||
default: Date.now | ||
} | ||
}); | ||
var Campground = mongoose.model("Campground",campgroundSchema); | ||
module.exports = Campground; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
var mongoose = require("mongoose"); | ||
var commentSchema = new mongoose.Schema({ | ||
text: String, | ||
author: { | ||
id: { | ||
type: mongoose.Schema.Types.ObjectId, | ||
ref: "User" | ||
}, | ||
username: String | ||
}, | ||
createdAt: { | ||
type: Date, | ||
default: Date.now | ||
} | ||
}); | ||
module.exports = mongoose.model("Comment",commentSchema); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
var mongoose = require("mongoose") | ||
var passportLocalMongoose = require("passport-local-mongoose"); | ||
var UserSchema = new mongoose.Schema({ | ||
username: String, | ||
password: String | ||
}) | ||
UserSchema.plugin(passportLocalMongoose); | ||
module.exports = mongoose.model("User",UserSchema); |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.