Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var express = require('express');
- var app = express();
- var bodyParser = require('body-parser');
- var mongoose = require('mongoose');
- // database config
- mongoose.Promise = global.Promise;
- mongoose.connect('mongodb://localhost:27017/');
- //,{useMongoClient: true});
- // middleware
- app.use(express.static('public'));
- app.use(bodyParser.urlencoded({extended: false}));
- app.use(bodyParser.json());
- // configure view engine
- app.set('views', __dirname + '/views');
- app.set('view engine', 'pug');
- // utility code
- //var usernames = [];
- function userExists(toFind) {
- for (var i = 0; i < usernames.length; i++) {
- if (usernames[i] === toFind) {
- return true;
- }
- }
- return false;
- }
- // database schema
- var Schema = mongoose.Schema;
- var userSchema = new Schema({
- username: {type: String,
- unique: true,
- index: true},
- email: String,
- hashedPassword: String
- }, {collection: 'users'});
- var User = mongoose.model('user', userSchema);
- // routes
- app.get("/checkUsername", (request, response) => {
- response.render("enterUsername", {
- title: title,
- message: "Please enter a username to check"
- });
- });
- app.post("/checkUsername", (request, response) => {
- var username = request.body.username;
- // Check if username is in use
- var collection = mongoDb.collection("users");
- collection.find({ username: username }).toArray((error, documents) => {
- var message = "That username is available";
- if (error) {
- message = "An internal error has occurred";
- } else if (documents.length > 0) {
- message = "This username already exists. Please try another."
- }
- // Respond
- response.render("enterUsername", {
- title: title,
- message: message
- });
- });
- });
- function reloadStudentList(request, response, errorMessage) {
- Student.find().then(function(results) {
- response.render('students', {title: 'Student List',
- students: results,
- errorMessage: errorMessage});
- });
- }
- app.get('/students', function(request, response) {
- reloadStudentList(request, response, '');
- });
- app.post('/deleteStudent', function(request, response) {
- var sid = request.body.sid;
- Student.remove({sid: sid}, function(error) {
- if (error) {
- console.log('error deleting student: ' + error);
- reloadStudentList(request, response, 'Unabled to delete student');
- } else {
- reloadStudentList(request, response, 'Student deleted');
- }
- });
- });
- app.post('/addOrUpdateStudent', function(request, response) {
- var sid = request.body.sid;
- var firstName = request.body.firstName;
- var lastName = request.body.lastName;
- var gpa = parseFloat(request.body.gpa);
- var studentData = {sid: sid,
- firstName: firstName,
- lastName: lastName,
- gpa: gpa};
- Student.find({sid: sid}).then(function(results) {
- if (results.length > 0) {
- // update the student
- Student.update({sid: sid},
- studentData,
- {multi: false},
- function(error, numAffected) {
- if (error || numAffected != 1) {
- console.log('Unable to update student: ' + error);
- reloadStudentList(request, response, 'Unable to update student');
- } else {
- reloadStudentList(request, response, 'Student updated');
- }
- });
- } else {
- // save a new student
- var newStudent = new Student(studentData);
- newStudent.save(function(error) {
- if (error) {
- console.log('Unable to save student');
- reloadStudentList(request, response, 'Unable to add student');
- } else {
- reloadStudentList(request, response, 'Student added');
- }
- });
- }
- });
- });
- app.get('/register', function(request, response) {
- response.render('register', {title: 'Register'});
- });
- app.post('/processRegistration', function(request, response) {
- var username = request.body.username;
- var email = request.body.email;
- var password = request.body.pwd;
- var hashedPassword = bcrypt.hashSync(password);
- var newUser = new User({username: username,
- email: email,
- hashedPassword: hashedPassword});
- newUser.save(function(error) {
- if (error) {
- console.log('Unable to register: ' + error);
- response.render('register', {errorMessage: 'Unable to register user.'});
- } else {
- request.session.username = username;
- response.render('registrationSuccess', {username: username,
- title: 'Welcome aboard!'});
- }
- });
- });
- app.get('/login', function(request, response) {
- response.render('login', {title: 'Please Log In',
- errorMessage: ''});
- });
- app.post('/processLogin', function(request, response) {
- var username = request.body.username;
- var password = request.body.pwd;
- User.find({username: username}).then(function(results) {
- if (results.length == 0) {
- // Login failed
- response.render('login', {title: 'Please Log In',
- errorMessage: 'Login Incorrect'});
- } else {
- // login success
- if (bcrypt.compareSync(password, results[0].hashedPassword)) {
- request.session.username = username;
- response.render('loginSuccess', {username: username,
- title: 'Login Success'});
- }
- }
- });
- });
- app.get('/logout', function(request, response) {
- request.session.username = '';
- response.redirect('/');
- });
- app.listen(3001, function() {
- console.log('Listening on port 3001');
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement