-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
110 lines (99 loc) · 3.02 KB
/
server.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
const express = require('express')
const passwordHash = require('password-hash')
const bodyParser = require('body-parser')
const path = require('path')
const config = require('./dbconfig.js')
// database initialise
let db = config.db
config.connectDB()
config.createDB()
const app = express()
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json())
app.use(express.static(path.join(__dirname, 'public')))
// Redirects to splash page if allowed to log in
app.post('/api/splash', function(req, res) {
let body = req.body
let userid = body.id
config.checkUser(userid, function(checkedUser) {
if (!checkedUser.ok) {
res.sendStatus(401)
return
}
else {
return res.redirect('../splash.html')
}
})
})
// Creates new user
app.post('/api/createuser', function(req, res) {
let body = req.body
let username = body.user.toLowerCase()
let password = body.pass
let email = body.email.toLowerCase()
let hashedPassword = passwordHash.generate(password)
config.createUser(username, hashedPassword, email)
res.sendStatus(200)
})
// Checks if user is allowed to log in, returns username and userid
app.post('/api/login', function(req, res) {
let body = req.body
let username = body.user.toLowerCase()
let password = body.pass
config.checkUserLogin(username, password, function(checkedUser) {
if (!checkedUser.ok) {
let response = JSON.stringify({
'ok': false
})
res.status(401).send(response)
}
else {
let response = JSON.stringify({
'user': username,
'userid': checkedUser.userid,
'ok': true
})
res.status(200).send(response)
}
})
})
// Server function to add a module to database
app.post('/api/addmodule', function(req, res) {
let body = req.body
let userid = body.userid
let title = body.title
let sessionCount = body.sessionCount
let desc = body.desc
let modId;
let response;
config.createModule(userid, title, function(newModule) {
if (!newModule.ok) {
response = {
'ok': false
}
res.status(500).send(JSON.stringify(response)).end()
}
else {
modId = newModule.modId;
response = {
'modId': modId,
'ok': true
}
}
config.updateModuleDescription(modId, desc)
config.updateModuleSessionCount(modId, sessionCount)
res.status(200).send(JSON.stringify(response))
})
})
// Retrieve module data from database
app.post('/api/getusermodules', function(req, res) {
let userid = req.body.userid
config.getUsersModules(userid, function(modules) {
let response = JSON.stringify(modules)
res.status(200).send(modules)
})
})
// Listen at 127.0.0.1:3000
app.listen(3000, function() {
console.log("Server started, port 3000.")
})