Advertisement
Guest User

Untitled

a guest
Apr 4th, 2018
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.83 KB | None | 0 0
  1. var express = require('express');
  2. var app = express();
  3. var bodyParser = require('body-parser');
  4. var mongoose = require('mongoose');
  5.  
  6. // database config
  7. mongoose.Promise = global.Promise;
  8. mongoose.connect('mongodb://localhost:27017/');
  9. //,{useMongoClient: true});
  10.  
  11. // middleware
  12. app.use(express.static('public'));
  13. app.use(bodyParser.urlencoded({extended: false}));
  14. app.use(bodyParser.json());
  15.  
  16. // configure view engine
  17. app.set('views', __dirname + '/views');
  18. app.set('view engine', 'pug');
  19.  
  20.  
  21.  
  22. // utility code
  23. //var usernames = [];
  24. function userExists(toFind) {
  25. for (var i = 0; i < usernames.length; i++) {
  26. if (usernames[i] === toFind) {
  27. return true;
  28. }
  29. }
  30. return false;
  31. }
  32.  
  33. // database schema
  34. var Schema = mongoose.Schema;
  35. var userSchema = new Schema({
  36. username: {type: String,
  37. unique: true,
  38. index: true},
  39. email: String,
  40. hashedPassword: String
  41. }, {collection: 'users'});
  42. var User = mongoose.model('user', userSchema);
  43.  
  44.  
  45. // routes
  46. app.get("/checkUsername", (request, response) => {
  47. response.render("enterUsername", {
  48. title: title,
  49. message: "Please enter a username to check"
  50. });
  51. });
  52.  
  53.  
  54. app.post("/checkUsername", (request, response) => {
  55. var username = request.body.username;
  56.  
  57. // Check if username is in use
  58. var collection = mongoDb.collection("users");
  59. collection.find({ username: username }).toArray((error, documents) => {
  60. var message = "That username is available";
  61. if (error) {
  62. message = "An internal error has occurred";
  63. } else if (documents.length > 0) {
  64. message = "This username already exists. Please try another."
  65. }
  66.  
  67. // Respond
  68. response.render("enterUsername", {
  69. title: title,
  70. message: message
  71. });
  72. });
  73. });
  74.  
  75. function reloadStudentList(request, response, errorMessage) {
  76. Student.find().then(function(results) {
  77. response.render('students', {title: 'Student List',
  78. students: results,
  79. errorMessage: errorMessage});
  80. });
  81. }
  82.  
  83. app.get('/students', function(request, response) {
  84. reloadStudentList(request, response, '');
  85. });
  86.  
  87. app.post('/deleteStudent', function(request, response) {
  88. var sid = request.body.sid;
  89. Student.remove({sid: sid}, function(error) {
  90. if (error) {
  91. console.log('error deleting student: ' + error);
  92. reloadStudentList(request, response, 'Unabled to delete student');
  93. } else {
  94. reloadStudentList(request, response, 'Student deleted');
  95. }
  96. });
  97. });
  98.  
  99. app.post('/addOrUpdateStudent', function(request, response) {
  100. var sid = request.body.sid;
  101. var firstName = request.body.firstName;
  102. var lastName = request.body.lastName;
  103. var gpa = parseFloat(request.body.gpa);
  104.  
  105. var studentData = {sid: sid,
  106. firstName: firstName,
  107. lastName: lastName,
  108. gpa: gpa};
  109.  
  110. Student.find({sid: sid}).then(function(results) {
  111. if (results.length > 0) {
  112. // update the student
  113. Student.update({sid: sid},
  114. studentData,
  115. {multi: false},
  116. function(error, numAffected) {
  117. if (error || numAffected != 1) {
  118. console.log('Unable to update student: ' + error);
  119. reloadStudentList(request, response, 'Unable to update student');
  120. } else {
  121. reloadStudentList(request, response, 'Student updated');
  122. }
  123. });
  124. } else {
  125. // save a new student
  126. var newStudent = new Student(studentData);
  127. newStudent.save(function(error) {
  128. if (error) {
  129. console.log('Unable to save student');
  130. reloadStudentList(request, response, 'Unable to add student');
  131. } else {
  132. reloadStudentList(request, response, 'Student added');
  133. }
  134. });
  135. }
  136. });
  137. });
  138.  
  139. app.get('/register', function(request, response) {
  140. response.render('register', {title: 'Register'});
  141. });
  142.  
  143. app.post('/processRegistration', function(request, response) {
  144. var username = request.body.username;
  145. var email = request.body.email;
  146. var password = request.body.pwd;
  147. var hashedPassword = bcrypt.hashSync(password);
  148.  
  149. var newUser = new User({username: username,
  150. email: email,
  151. hashedPassword: hashedPassword});
  152. newUser.save(function(error) {
  153. if (error) {
  154. console.log('Unable to register: ' + error);
  155. response.render('register', {errorMessage: 'Unable to register user.'});
  156. } else {
  157. request.session.username = username;
  158. response.render('registrationSuccess', {username: username,
  159. title: 'Welcome aboard!'});
  160. }
  161. });
  162. });
  163.  
  164. app.get('/login', function(request, response) {
  165. response.render('login', {title: 'Please Log In',
  166. errorMessage: ''});
  167. });
  168.  
  169. app.post('/processLogin', function(request, response) {
  170. var username = request.body.username;
  171. var password = request.body.pwd;
  172.  
  173. User.find({username: username}).then(function(results) {
  174. if (results.length == 0) {
  175. // Login failed
  176. response.render('login', {title: 'Please Log In',
  177. errorMessage: 'Login Incorrect'});
  178. } else {
  179. // login success
  180. if (bcrypt.compareSync(password, results[0].hashedPassword)) {
  181. request.session.username = username;
  182. response.render('loginSuccess', {username: username,
  183. title: 'Login Success'});
  184. }
  185. }
  186. });
  187. });
  188.  
  189. app.get('/logout', function(request, response) {
  190. request.session.username = '';
  191. response.redirect('/');
  192. });
  193.  
  194. app.listen(3001, function() {
  195. console.log('Listening on port 3001');
  196. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement