-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
137 lines (112 loc) · 3.14 KB
/
app.js
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
137
const express = require('express');
const bodyParser = require('body-parser');
const hbs = require('express-handlebars');
const db = require('./db');
var userModel = require('./models/userModel');
const userController = require('./controllers/userController');
const validator = require('./controllers/validator');
const app = express();
////init db////
//const initiator = require('./init');
////middleware////
app.use(express.static(__dirname + '/public'));
//handlebars setup
app.engine('hbs', hbs ({
helpers: {
hasval: function (arr) {
return (arr.includes(userModel.id));
},
getuserid: function() {
return userModel.id;
}
},
extname: 'hbs',
defaultLayout: 'layout',
layoutDir: __dirname + '/views/layouts'
}));
app.set('view engine', 'hbs');
//view engine setup
app.set('views', __dirname + '/views')
//app.engine('html', require('ejs').renderFile);
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())
////routes////
//login page
app.get('/login', (req, res) => {
res.render('login', {title: 'Login Page'});
});
var lastip='', errcnt=5;
app.post('/login', (req, res) => {
let sql = ('SELECT * FROM users WHERE username = ' + req.body.username + ' AND password = ' + req.body.password);
db.query(sql, (err, result) => {
if(err || result == undefined)
console.log(err);
//check username & password
validator.validate(lastip, errcnt, result);
//found user
//create new model
var rdp = result[Object.keys(result)[0]];
userModel = userController.createUser(rdp);
//push model to update
res.redirect('/home');
});
});
////account home-page////
//load from login or reload pag from uodate
app.get('/home', (req, res, next) => {
//get users table, don't print current user
let sql = ('SELECT * FROM users WHERE ' + userModel.id + ' <> users.id');
db.query(sql, (err, result) => {
if(err || result == undefined)
console.log(err);
//push to view
res.render('home', {
title: 'Home Page',
myuser: userModel,
userstable: result
});
});
});
//post hobbie update
app.post('/updatehobbies', (req,res) => {
//get new hobbies from textbox
var hobbies = (req.body.hobbies).split(/[ ,]+/);
//post error, reload page
if(validator.noval(hobbies))
res.redirect('/home');
//update model
userModel = userController.updateUser(userModel, "hobbies", hobbies);
//update DB
let sql = ('UPDATE users SET hobbies = "' + userModel.hobbies + '" WHERE id = ' + userModel.id);
db.query(sql, (err, result) => {
if(err || result == undefined)
console.log(err);
});
//update view
res.redirect('/home');
});
//update friend list
app.post('/addfriend', (req,res) => {
console.log(req.body.id);
/*
let sql = "SELECT friends FROM users ";
db.query(sql, (err, result) => {
if(err || result == undefined)
console.log(err);
console.log(result.affectedRows + " record(s) updated");
res.render('home', {
title: 'Home Page',
myuser: userModel,
userstable: result
});
});
*/
//check friends <= 5
res.render('home');
});
const portnum = 3000;
app.listen(portnum, () => {
console.log('Server started on port ' + portnum);
});