Skip to content

Commit

Permalink
Add comments to server code
Browse files Browse the repository at this point in the history
  • Loading branch information
gsnada committed Apr 25, 2018
1 parent 328d193 commit 23e5eea
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 55 deletions.
32 changes: 10 additions & 22 deletions config/passport.js
Original file line number Diff line number Diff line change
@@ -1,43 +1,34 @@
var passport=require('passport');

var localStrategy=require('passport-local').Strategy;

var passport=require('passport'); // used for authentication
var localStrategy=require('passport-local').Strategy; // using username and password for login
var dataModels = require('../database-mongo');



//store user id inside session
passport.serializeUser(function(user,done){
done(null,user.id); //set user id inside session
done(null,user.id);
});



// get the user account from the db
passport.deserializeUser(function(id,done){
dataModels.User.findById(id,function(err,user){
done(err,user);
})
});



// handle local sign up strategy
passport.use('local.signup',new localStrategy({
usernameField:'username',
passowrd:'password',
passReqToCallback:true,
passReqToCallback:true, // to pass the entire req to a callback
},function(req,username,password,done){
dataModels.User.findOne({'username':username},function(err,user){
if(err) return done(err);

if(user){

return done(null,false);

}
// if the user doesn't exist, create a new one
var newUser=new dataModels.User();
newUser.username=req.body.username;
newUser.password=newUser.encryptPassword(req.body.password);


newUser.save(function(err){
if(err) return done(err);
return done (null,newUser);
Expand All @@ -46,6 +37,7 @@ passport.use('local.signup',new localStrategy({
}
))

// handle local login strategy
passport.use('local.login',new localStrategy({
usernameField:'username',
passowrd:'password',
Expand All @@ -56,17 +48,13 @@ passport.use('local.login',new localStrategy({
return done(err);
}
if(!user){
req.flash('loginError','username not found');
req.flash('loginError','username not found'); // to send error message
return done(null,false);
}

if(!user.validPassword(req.body.password)){
return done(null,false);

}
return done(null,user);


})
}
))
30 changes: 14 additions & 16 deletions database-mongo/index.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
var bcrypt=require('bcrypt-nodejs');
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/doctors');
var db = mongoose.connection;
var bcrypt=require('bcrypt-nodejs');

db.on('error', function() {
console.log('mongoose connection error');
Expand Down Expand Up @@ -36,6 +36,16 @@ var doctorsSchema = mongoose.Schema({

var Doctor = mongoose.model('Doctor', doctorsSchema);

// to retrive all doctors
var selectAll = function(callback) {
Doctor.find({}, function(err, doctor) {
if(err) {
callback(err, null);
} else {
callback(null, Doctor);
}
});
};


var userSchema = mongoose.Schema({
Expand All @@ -45,30 +55,18 @@ var userSchema = mongoose.Schema({
password: String
});

var User = mongoose.model('User',userSchema);

// user password encryption
userSchema.methods.encryptPassword=function(password){
return bcrypt.hashSync(password,bcrypt.genSaltSync(10));
}

// compare the user password and the encrypted one
userSchema.methods.validPassword=function(password){
return bcrypt.compareSync(password,this.password);
}


var User = mongoose.model('User',userSchema);


var selectAll = function(callback) {
Doctor.find({}, function(err, doctor) {
if(err) {
callback(err, null);
} else {
callback(null, Doctor);
}
});
};

module.exports.selectAll = selectAll;
module.exports.Doctor=Doctor;
module.exports.User = User;
//module.exports.Doctor=Doctor;
35 changes: 18 additions & 17 deletions server/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ var session=require('express-session');
var mongoStore=require('connect-mongo')(session);
var passport=require('passport');

// var routes=require('./userroutes')

// flash is used to send messages to the client without redirect
var flash=require('express-flash');

require('../config/passport');
Expand All @@ -24,6 +24,8 @@ app.use(bodyParser.urlencoded({ extended: false }));

// app.use(cookieParser);


// use session middleware and configure it
app.use(session({secret:'mysecretsession',resave:true,saveUninitialized: true,

store:new mongoStore({mongooseConnection: mongoose.connection,collection: 'session',})
Expand All @@ -32,16 +34,14 @@ app.use(session({secret:'mysecretsession',resave:true,saveUninitialized: true,
app.use(passport.initialize());
app.use(passport.session());

// app.use(routes);

app.use(flash());

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




/* list of all routes*/

app.get('/admin',function(req,res){
res.render('admin');
Expand All @@ -52,7 +52,6 @@ app.get('/admin/signup',function(req,res){
res.render('signup');
})


app.get('/admin/doctorform',function(req,res){
res.render('doctorform');
})
Expand Down Expand Up @@ -80,18 +79,15 @@ app.post('/admin/doctorform',function(req,res){
//insert doctor_data to the database
var newDoc=new dataModels.Doctor(doctor_data);



newDoc.save(function(err,doc){
if(err){
console.log("error in saving a new doctor");

console.log("error in saving a new doctor");
res.send("error in saving DB")
}
else{
res.redirect('/admin/doctorform');
}


})
}else if(req.body.action==="Delete doctor"){
// delete doctor by finding his name and delete it{ name } using deleteOne
Expand All @@ -115,10 +111,16 @@ app.post('/admin/doctorform',function(req,res){
newDoctor.save(function(err, result2){
if(!err) {
res.render('doctorform')
} else res.send(err);
} else {
res.sendStatus(500);
res.send(err);
}
})

} else res.send(err);
} else {
res.setStatus(500);
res.send(err);
}
});
}

Expand Down Expand Up @@ -156,20 +158,19 @@ app.get('/profile',function(req,res){



// to get all dooctors from db
// get high rate doctors in a specific spcialization
app.get('/doctors/:rateSpic', function (req, res) {

dataModels.Doctor.find({specialization:req.params.rateSpic},function(err, data) {
dataModels.Doctor.find({specialization:req.params.rateSpic},function(err, data) {
if(err) {
res.sendStatus(500);
} else {

res.send(data);
}
}).limit(3).sort( { rate: -1} );

});

// get all nearest doctors based on specialty
app.get('/docNearst/:spic', function (req, res) {
console.log('aa',req.params.spic);
dataModels.Doctor.find({specialization:req.params.spic},function(err, data) {
Expand Down

0 comments on commit 23e5eea

Please sign in to comment.