Skip to content

Commit 77b12be

Browse files
committed
Added Login as teacher
1 parent 5202f2f commit 77b12be

File tree

6 files changed

+116
-18
lines changed

6 files changed

+116
-18
lines changed

md5gen.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
bcrypt = require('bcryptjs');
2+
password = 'mad' ;
3+
bcrypt.genSalt(10 , function(err, salt)
4+
{
5+
bcrypt.hash(password, salt, function(err,hash)
6+
{
7+
console.log(hash);
8+
});
9+
});

models/teacher.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
var mongoose = require('mongoose');
2+
var bcrypt = require('bcryptjs');
3+
4+
var teacherSchema = mongoose.Schema({
5+
name: {type: String },
6+
username: {type: String , index: true},
7+
email: {type: String},
8+
password: {type: String},
9+
Courses : {type: Array , "default": []}
10+
});
11+
12+
var teachers = module.exports = mongoose.model('teachers' , teacherSchema);

models/teachers.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
var mongoose = require('mongoose');
2+
var bcrypt = require('bcryptjs');
3+
4+
var teacherSchema = mongoose.Schema({
5+
name: {type: String },
6+
username: {type: String , index: true},
7+
email: {type: String},
8+
password: {type: String},
9+
Courses : {type: Array , "default": []}
10+
});
11+
12+
var User = module.exports = mongoose.model('teachers' , teacherSchema);
13+
14+
module.exports.getUserByUsername = function(username , callback){
15+
console.log('hi');
16+
var query = {username: username};
17+
User.findOne(query , callback);
18+
19+
}
20+
21+
module.exports.getUserById = function(id , callback){
22+
//var query = {username: username};
23+
User.findById(id, callback);
24+
}
25+
26+
module.exports.comparePassword = function(candidatePassword , hash, callback){
27+
bcrypt.compare(candidatePassword, hash, function(err, isMatch) {
28+
if(err) throw err;
29+
callback(null , isMatch);
30+
});
31+
}

models/user.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ var UserSchema = mongoose.Schema({
2121
resetPasswordExpires: Date
2222
});
2323

24-
var User = module.exports = mongoose.model('student' , UserSchema);
24+
25+
var User = module.exports = mongoose.model('students' , UserSchema);
26+
2527
//console.log(User);
2628

2729
module.exports.createUser = function(newUser , callback)

routes/users.js

Lines changed: 60 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ var crypto = require('crypto');
66
var async = require('async');
77
var nodemailer = require('nodemailer');
88
var User = require('../models/user');
9+
var teacher = require('../models/teachers');
10+
var teach_flag = 0;
911
//console.log(user);
1012
//Register
1113
router.get('/register' , function(req, res){
@@ -83,18 +85,35 @@ router.post('/register' , function(req, res){
8385
}
8486
});
8587

86-
passport.use(new LocalStrategy(
87-
function(username, password,done) {
88-
89-
User.getUserByUsername(username,function(err, user){
90-
if(err) throw err;
88+
passport.use(new LocalStrategy({
89+
passReqToCallback: true
90+
},
91+
function(req,username, password, done) {
92+
//console.log('hi');
93+
var checkbox = req.body.checkbox ;
94+
var tmp_user = User;
95+
//console.log(User);
96+
if(checkbox)
97+
{
98+
console.log("logging as teacher");
99+
tmp_user = teacher;
100+
teach_flag = 1;
101+
}
102+
else
103+
{
104+
teach_flag = 0;
105+
}
106+
tmp_user.getUserByUsername(username,function(err, user){
107+
if(err) return done(err);
91108
if(!user){
92109
return done(null,false,{message: 'Unknown User'});
93110
}
94111

95-
User.comparePassword(password,user.password , function(err,isMatch) {
112+
tmp_user.comparePassword(password,user.password , function(err,isMatch) {
113+
96114
if(err) throw err;
97115
if(isMatch){
116+
console.log(user);
98117
return done(null,user);
99118
}
100119
else
@@ -103,26 +122,51 @@ passport.use(new LocalStrategy(
103122
}
104123
});
105124
});
106-
}));
125+
}));
107126

108127

109128
passport.serializeUser(function(user, done) {
129+
110130
done(null, user.id);
111131
});
112132

113133
passport.deserializeUser(function(id, done) {
114-
User.getUserById(id, function(err, user) {
115-
done(err, user);
116-
});
134+
if(teach_flag)
135+
{
136+
teacher.getUserById(id , function(err,user) {
137+
done(err , user)
138+
});
139+
}
140+
else
141+
{
142+
User.getUserById(id, function(err, user) {
143+
done(err, user);
144+
145+
});
146+
}
147+
117148
});
118-
119-
120-
router.post('/login',
121-
passport.authenticate('local',{successRedirect: '/', failureRedirect: '/users/login', failureFlash: true}),
122-
function(req, res) {
123-
149+
150+
router.post('/login',passport.authenticate('local',{successRedirect: '/', failureRedirect: '/users/login', failureFlash: true})
151+
,function(req, res) {
124152
res.redirect('/');
125153
});
154+
/*
155+
router.post('/login',function(req, res) {
156+
var teacher = req.body.checkbox;
157+
if(teacher)
158+
{
159+
}
160+
else
161+
{
162+
console.log('helo');
163+
console.log('helo');
164+
res.redirect('/');
165+
}
166+
//console.log(teacher);
167+
168+
});
169+
*/
126170

127171
router.get('/logout' , function(req , res){
128172
req.logout();

views/login.handlebars

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
</div>
1111
<div class="form-group">
1212
<label>Login as a Instructor</label>
13-
<input type="checkbox" class="form-control" name="checkbox" value = "teacher">
13+
<input type="checkbox" name="checkbox" value = "teacher">
1414
</div>
1515

1616
<button type="submit" class="btn btn-default">Submit</button>

0 commit comments

Comments
 (0)