Skip to content

Commit e2dac91

Browse files
committed
add homepage and signup form
0 parents  commit e2dac91

File tree

21 files changed

+8005
-0
lines changed

21 files changed

+8005
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node_modules/

app.js

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
var express = require("express")
2+
app = express()
3+
bodyParser = require("body-parser")
4+
mongoose = require("mongoose")
5+
passport = require("passport")
6+
LclStrategy = require("passport-local")
7+
mthdOveride = require("method-override")
8+
Blog = require("./models/blog")
9+
Comment = require("./models/comment")
10+
User = require("./models/user")
11+
12+
var indexRoutes = require("./routes/index")
13+
// var commentRoutes = require("./routes/comments")
14+
var blogRoutes = require("./routes/blogs")
15+
16+
mongoose.connect("mongodb://localhost/Blog_Website", {useNewUrlParser: true, useUnifiedTopology: true}, function() {
17+
console.log("MongoDB Connected")
18+
});
19+
20+
app.set("view engine", "ejs")
21+
app.use(express.static(__dirname + "/public"))
22+
app.use(bodyParser.urlencoded({extended: true})) //used to support body parser which helps in transforming data from form to req.body
23+
app.use(mthdOveride("_method"))
24+
// app.use(flash())
25+
26+
// ----PASSPORT CONFIG--------
27+
app.use(require("express-session")({
28+
secret: "secret",
29+
resave: false,
30+
saveUnitialized: false
31+
}))
32+
33+
app.use(passport.initialize())
34+
app.use(passport.session())
35+
passport.use(new LclStrategy(User.authenticate()))
36+
passport.serializeUser(User.serializeUser())
37+
passport.deserializeUser(User.deserializeUser())
38+
// -----------------------------
39+
app.use(function(req, res, next){
40+
res.locals.currentUser = req.user // currentUser is variable to pass in EVERY routes! req.user stores information about the logged in user
41+
// res.locals.error = req.flash("error")
42+
// res.locals.success = req.flash("success")
43+
next()
44+
})
45+
46+
app.use(indexRoutes)
47+
// app.use("/campgrounds/:id/comments", commentRoutes)
48+
app.use(blogRoutes)
49+
50+
//-------------LISTEN ON PORT 5000--------------
51+
app.listen(process.env.PORT || 5000, function() {
52+
console.log("server is running at http://localhost:5000")
53+
})

middleware/index.js

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
var Blog = require("../models/blog");
2+
var Comment = require("../models/comment");
3+
4+
var middlewareObj = {}
5+
middlewareObj.checkBlogOwnership = function(req, res, next){
6+
if(req.isAuthenticated()){
7+
Blog.findById(req.params.id, function(err, foundBlog){
8+
if(err){
9+
res.redirect("back")
10+
} else{
11+
if(foundBlog.author.id.equals(req.user._id)){
12+
next()
13+
} else{
14+
res.redirect("back")
15+
}
16+
}
17+
})
18+
} else{
19+
res.redirect("back")
20+
}
21+
}
22+
23+
middlewareObj.isLoggedIn = function(req, res, next){
24+
if(req.isAuthenticated()){
25+
return next()
26+
}
27+
// req.flash("error", "Please Login First!")
28+
res.redirect("/login")
29+
}
30+
31+
middlewareObj.checkCommentOwnership = function(req, res, next){
32+
if(req.isAuthenticated()){
33+
Comment.findById(req.params.comment_id, function(err, foundComment){
34+
if(err){
35+
res.redirect("back")
36+
} else{
37+
if(foundComment.author.id.equals(req.user._id)){
38+
next()
39+
} else{
40+
res.redirect("back")
41+
}
42+
}
43+
})
44+
} else{
45+
// req.flash("error", "You need to be logged in!")
46+
res.redirect("back")
47+
}
48+
}
49+
50+
module.exports = middlewareObj
51+
52+

models/blog.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
var mongoose = require("mongoose")
2+
var blogSchema = new mongoose.Schema({
3+
title: String,
4+
image: String,
5+
body: String,
6+
created: {
7+
type: Date,
8+
default: Date.now
9+
},
10+
author: {
11+
id: {
12+
type: mongoose.Schema.Types.ObjectId,
13+
ref: "User"
14+
},
15+
username: String
16+
},
17+
comments: [
18+
{
19+
type: mongoose.Schema.Types.ObjectId,
20+
ref: "Comment"
21+
}
22+
]
23+
})
24+
25+
module.exports = mongoose.model("Blog", blogSchema)

models/comment.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
var mongoose = require("mongoose")
2+
var commentSchema = mongoose.Schema({
3+
text: String,
4+
author: {
5+
id: {
6+
type: mongoose.Schema.Types.ObjectId,
7+
ref: "User"
8+
},
9+
username: String
10+
}
11+
})
12+
13+
module.exports = mongoose.model("Comment", commentSchema)

models/user.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
var mongoose = require("mongoose")
2+
var passportLocalMongoose = require("passport-local-mongoose")
3+
var userSchema = new mongoose.Schema({
4+
username: String,
5+
password: String
6+
})
7+
8+
userSchema.plugin(passportLocalMongoose)
9+
module.exports = mongoose.model("User", userSchema)

0 commit comments

Comments
 (0)