-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
137 lines (112 loc) · 3.93 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 mongoose = require("mongoose");
const bodyParser = require('body-parser');
const path = require('path');
const cors = require('cors');
const keys = require('./config/keys');
require('./models/Students');
const MongoClient = require("mongodb").MongoClient;
const ObjectId = require("mongodb").ObjectID;
const CONNECTION_URL = 'mongodb+srv://csc309Phil:csc309csc309@cluster0-1bsyp.mongodb.net/test?retryWrites=true&w=majority';
const DATABASE_NAME = "logic2020";
//setup mongoose connection
MongoClient.connect(CONNECTION_URL, { useNewUrlParser: true }, (error, client) => {
if(error) {
throw error;
}
database = client.db(DATABASE_NAME);
question_table = database.collection("questions");
ass_table = database.collection("ass");
student_table = database.collection("Students");
console.log("Connected to " + DATABASE_NAME + "!");
});
var app = Express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(cors());
console.log(__dirname)
app.use(Express.static(__dirname + "/client"));
// express-session for managing user sessions
const session = require('express-session');
// Create a session cookie
app.use(session({
secret: 'oursecret',
resave: false,
saveUninitialized: false,
cookie: {
expires: 1800000,
httpOnly: true
}
}));
// Our own express middleware to check for
// an active user on the session cookie (indicating a logged in user.)
const sessionChecker = (req, res, next) => {
if (req.session.user) {
console.log("Checking session: " + req.session.user);
// res.redirect('/student/dashboard'); // redirect to dashboard if logged in.
if (req.session.type === "student") {
res.redirect('/student/dashboard');
} else {
res.redirect('/admin/dashboard');
}
} else {
next(); // next() moves on to the route.
}
};
const isloggedInAsStudent = (req, res, next) => {
if (req.session.user && req.session.type == "student") {
next();
} else {
res.status(401).redirect('/');
}
};
const isloggedInAsAdmin = (req, res, next) => {
if (req.session.user && req.session.type == "admin") {
next();
} else {
res.status(401).redirect('/');
}
};
require('./routes/questionRoutes')(app)
require('./routes/studentRoutes')(app)
require('./routes/assRoutes')(app)
require('./routes/authRoutes')(app)
app.get('/', sessionChecker, (req, res) => {
res.sendFile(path.join(__dirname + '/client/tmpl/index.html'));
});
app.get('/admin/dashboard', isloggedInAsAdmin, (req, res) => {
res.sendFile(path.join(__dirname + '/client/tmpl/professorDashboard.html'))
})
app.get('/admin/course', isloggedInAsAdmin, (req, res) => {
res.sendFile(path.join(__dirname + '/client/tmpl/professorCourse.html'))
})
app.get('/admin/account', isloggedInAsAdmin, (req, res) => {
res.sendFile(path.join(__dirname + '/client/tmpl/professorAccount.html'))
})
app.get('/student/dashboard', isloggedInAsStudent, (req, res) => {
res.sendFile(path.join(__dirname + '/client/tmpl/dashboard.html'))
})
app.get('/practice/:aid/:qid', isloggedInAsStudent, (req, res) => {
res.sendFile(path.join(__dirname + '/client/tmpl/practice.html'))
})
app.get('/practice/:qid', isloggedInAsStudent, (req, res) => {
res.sendFile(path.join(__dirname + '/client/tmpl/practice.html'))
})
app.get('/student/account', isloggedInAsStudent, (req, res) => {
res.sendFile(path.join(__dirname + '/client/tmpl/account.html'))
})
app.get('/admin/assignment/:aid', isloggedInAsAdmin, (req, res) => {
res.sendFile(path.join(__dirname + '/client/tmpl/createAssignment.html'))
})
app.get('/api/student/login', isloggedInAsStudent, (req, res) => {
res.send({"user": req.session.user})
})
app.get('/api/getCurrentUserInfo', isloggedInAsStudent, (req, res) => {
req.url = '/api/students/'+ req.session.user;
return app._router.handle(req, res);
})
app.get('*', (req, res) => {
res.redirect('/');
})
const PORT = process.env.PORT || 5000
app.listen(PORT)