-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathendServer.js
More file actions
137 lines (112 loc) · 4.02 KB
/
endServer.js
File metadata and controls
137 lines (112 loc) · 4.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
var express = require('express');
var server = express();
var cookieParser = require('cookie-parser');
var expressSession = require('express-session');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var fs = require('fs');
var data;
var Schema;
var userSchema;
//user for schema
var user0;
var userID;
//variables for date deadlines
var newDeadline;
var existingDeadline;
server.use(cookieParser());
server.use(expressSession({secret:'prop', cookie:{maxAge:1000}}));
//serve everything in public as static files
server.use(express.static(__dirname+'/public'));
//connect to database named countdown
mongoose.connect('mongodb://lalavgen.com:6666/countdown');
var db = mongoose.connection;
//if error log error
db.on('error', function (err) {
console.log('connection error', err);
});
db.once('open', function () {
//once open, console log
console.log('MONGODB connected.');
});
//create new schema to use on model to insert
Schema = mongoose.Schema;
//our new user schema
userSchema = new Schema({
name : String,
date : String,
isWritten : Boolean
}, {collection: 'users'});
// first arg:name of schema second:schema template
User = mongoose.model('User', userSchema);
// this sets up the type of templating engine to use
server.engine('html', require('hogan-express'));
// set the folder where the views ( ie. template files ) are in
server.set('views', __dirname+ '/views');
server.set('view engine', 'html');
//get request for first login page
server.get('/login', function(req, res){
//render login html from views folder
res.render('login');
});
//get request for new User form which is posted to /newUser from login.html
server.get('/newUser', function(req, res){
//search for that username in database first
User.findOne({'name': req.query.username}, function(err, exist) {
//if that username was taken by someone else warn user to pick another username
if(exist && !err){
req.session.error = 'Looks like that username has been taken, please choose another one.';
res.render('login', { error: req.session.error });
delete req.session.error; // remove from further requests
console.log('LOOKS LIKE THAT USERNAME WAS ALREADY TAKEN..');
}else if (!exist && !err) {
// create new user for mongodb
user0 = new User({
name : req.query.username,
date : req.query.enteredDate,
isWritten : true
});
//if user doesn't exist, save
user0.save(function (err, data) {
console.log('1. Does NOT exist');
if (err) console.log(err);
else{
console.log('Saved!');
//save new deadline into var
newDeadline = data.date;
console.log(newDeadline + "deadline is");
//send user to countdown.html with the variable
res.render('countdown', {date : newDeadline});
}
// res.send(newDeadline);
});
};
});
});
//get request for existing users
server.get('/existingUser', function(req,res){
//search the entered name in database
User.findOne({'name': req.query.username}, function(err, exist) {
//if user exists and no error
if(exist && !err ){
//Get that user's deadline from mongodb
User.findOne({'name' : req.query.username},'date', function (err, person) {
//save deadline into variable
var existingDeadline = person.date;
console.log('2. Existing deadline is' + existingDeadline);
res.render('countdown', {date : existingDeadline});
delete req.session.error; // remove from further requests
});
//if entered username doesn't appear on database send error and redirect to login
}else if (!exist) {
req.session.error = 'Looks like that username does not exist. Did you type it right?';
res.render('login', { error: req.session.error });
delete req.session.error; // remove from further requests
};
});
});
//start server
server.listen( 4444, function(err){
if(err) console.log(err);
else console.log('Running server on port 4444');
});