aboutsummaryrefslogtreecommitdiff
path: root/routes/admin.js
blob: bdd4f9baf68d225235f605213a3a5fbcfa2c552c (plain)
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
var dbFile  = require("../node_simple.js");
var express = require('express');
var router = express.Router();
var csrf = require('csurf'); // Cross-Site Request Forgery prevention
var passport = require('passport');

var csrfProtection = csrf();
router.use(csrfProtection); // router is protected



router.get('/', isAdmin, function(req,res){
    res.render('admin', {csrfToken: req.csrfToken()});
});

/* Adds exam from front-end */
router.post('/add/exam', function(req,res){
    var course_code = req.body.course_code,
        year = req.body.year,
        type = req.body.type,
        term = req.body.term,
        instructors = parseStringArray(req.body.instructors),
        page_count = req.body.page_count,
        questions_count = req.body.questions_count,
        questions_list = parseStringArray(req.body.questions_list),
        upload_date = req.body.upload_date,
        uploaded_by = req.body.uploaded_by;

    var fields = [
        course_code,           // String
        year,                  // Int
        term,                  // String
        type,                  // String
        instructors,           // Array of strings
        page_count,            // Int
        questions_count,       // Int
        upload_date,           // String
        uploaded_by];          // String

    dbFile.add_exam(fields, questions_list, function(examAdded, statusMessage){
        if(examAdded){
            console.log("Success!");
        }else{
            console.log("Failed!");
        }
        console.log(statusMessage);
    });
    res.redirect('/admin');
});

/* Adds course from front-end */
router.post('/add/course', function(req,res){
    var course_code = req.body.course_code,
        title = req.body.title;

    dbFile.add_course(course_code, title, function(courseAdded, statusMessage){
        if(courseAdded){
            console.log("Success!");
        }else{
            console.log("Failure!");
        }
        console.log("Status message: " + statusMessage)
    });
    res.redirect('/admin');
});

router.post('/remove/exam', function(req,res){
    var course_code = req.body.course_code,
        year = req.body.year,
        term = req.body.term,
        type = req.body.type,
        campus = req.body.campus;

    var fields = [course_code, year, term, type];
    console.log(fields);
    dbFile.remove_exam(fields,
        function(examRemoved, statusMessage){
        if(examRemoved){
            console.log("Success.");
        } else {
            console.log("Failed.");
        }
        console.log(statusMessage);
    });

    res.redirect('/admin');
});



/* Takes an input string delimited by commas, will split by comma and trim white
 * spaces. Consider callback.
 */
function parseStringArray(input){
    var list = input.split(',');
    var parsedList = [];
    list.forEach(function(word){
        if (word != ""){
            parsedList.push(word.trim());
        }
    });
    return parsedList;
}

module.exports = router;


/************** Route protection ********************/

function isAdmin(req, res, next) {
    if (!req.user.email){
        return next();
    }
    res.redirect('/');
}