Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

connected pages with login #7

Merged
merged 2 commits into from
May 2, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules
87 changes: 87 additions & 0 deletions app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
const express = require('express');
const path = require('path')
const mongoose = require('mongoose');
var flash=require('connect-flash');
var session = require('express-session')//needed for connect-flash to work
var passport=require('passport');

const { ensureAuthenticated } = require('./config/auth');

const app=express();


//passport config
require('./config/passport')(passport);


//use modals
const MarioChar = require('./models/mariochar');

//EJS
app.set('view engine','ejs');

//body-parser
app.use(express.urlencoded({ extended: true }));

//Express-session
app.use(session({
secret: 'secret',
resave:true,
saveUninitialized:true,
}));

//Passport Middleware
app.use(passport.initialize());
app.use(passport.session());

//connect-flash
app.use(flash());

//global variables(to get different alerts)
app.use((req,res,next)=>{
res.locals.success_msg=req.flash('success_msg');
res.locals.error_msg=req.flash('error_msg');
res.locals.error=req.flash('error');
next();
})


//adding static files like css
app.use('/',express.static(__dirname+"/roots"))
app.use('/',express.static(__dirname+"/public"))




//connect to mongodb
mongoose.set('useUnifiedTopology', true);
mongoose.connect('mongodb://localhost/log',{ useNewUrlParser: true}).then(() => console.log('connected')).catch((err)=>console.log('err'));
mongoose.connect("mongodb://localhost:27017/blog",{ useNewUrlParser: true, useUnifiedTopology: true,useCreateIndex:true});

// blog.collections("posts").counters.insert(
// {
// _id: "userid",
// seq: 0
// }
// )
// function getNextSequence(name) {
// var ret = blog.collections("posts").counters.findAndModify(
// {
// query: { _id: name },
// update: { $inc: { seq: 1 } },
// new: true
// }
// );

// return ret.seq;
// }
//routing

app.use('/', require('./routes/index.js'));
app.use('/', require('./routes/userlogin.js'));
app.use('/user/:id',ensureAuthenticated, require('./routes/user.js'));
app.use('/publisher/:id',ensureAuthenticated, require('./routes/publisher.js'));
app.use('/publisher', ensureAuthenticated,require('./routes/blog.js'));


app.listen(3000,console.log('Server is connected to 3000'))
9 changes: 9 additions & 0 deletions config/auth.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
module.exports={
ensureAuthenticated:function(req,res,next){
if(req.isAuthenticated()){
return next();
}
req.flash('error_msg','Please login to view this page');
res.redirect('/login');
}
}
41 changes: 41 additions & 0 deletions config/passport.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
const LocalStrategy=require('passport-local').Strategy;
const mongoose = require('mongoose');
const bcrypt = require('bcryptjs');

//use modals
const MarioChar = require('../models/mariochar');

module.exports=function(passport){
passport.use(
new LocalStrategy({usernameField:'email'},(email,password,done)=>{
//Match User
MarioChar.findOne({email:email})
.then(user => {

if(!user){
return done(null,false,{message:'That email is not registered.'});
}

//Match password
bcrypt.compare(password,user.password,(err,isMatch)=>{
if(err) throw err;
if(isMatch){
return done(null,user);
}else{
return done(null,false,{message:'Password is incorrect'});
}
})
})
.catch((err)=>console.log(err));
})
);
passport.serializeUser(function(user, done) {
done(null, user.id);
});

passport.deserializeUser(function(id, done) {
MarioChar.findById(id, function(err, user) {
done(err, user);
});
});
}
38 changes: 38 additions & 0 deletions models/mariochar.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
const mongoose = require('mongoose');
const Schema = mongoose.Schema;


//create Schema and model

const MarioCharSchema = new Schema({
username: {
type:String,
required:true
},
email: {
type:String,
required:true
},
password: {
type:String,
required:true
},
radio:{
type:String,
required:true
},

date: {
type:Date,
default:Date.now
},


});



const MarioChar = mongoose.model('mariochar',MarioCharSchema);
//this tells that "mariochar" is a colletion, "MarioChar" is the model and schema of the model is MarioCharSchema.

module.exports = MarioChar; //so that we can use this in all the files in this project
38 changes: 38 additions & 0 deletions models/posts.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
const mongoose= require('mongoose')


const postsSchema =new mongoose.Schema({

title : {
type : String,
required : true,

},

postBody: {
type:String,
required:true,

},
update:{
type:String,

},

picname:{
type:String,

},
authorid:{
type:String,

},
authorname:{
type:String,

}

})


module.exports = mongoose.model('post', postsSchema)
Loading