forked from rts-cmk/WI73-cms
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrouter.js
executable file
·60 lines (54 loc) · 1.89 KB
/
router.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
const url = require('url');
const helpers = require('./helpers');
const database = require('./data/database');
const logger = require('./logger');
const routes = require('./routedefinitions');
// Denne funktion er arbejdshesten. Den kaldes hver gang serveren modtager en request fra en client
module.exports = function(req, res){
logger(req, 4);
var method = req.method;
var pathname = url.parse(req.url).pathname;
// Check om routen er '/'
if(pathname === '/'){
helpers.fileRespond(res, 'public/index.html');
return;
}
// Regular expression der analyserer 'pathname' for fil-request til public filer
var rx = /^\/(img\/|css\/|js\/)?\w+\.(html|png|js|css)$/i;
var regexFile = pathname.match(rx);
if(regexFile){
// Hvis regex'en fandt noget der matcher
helpers.fileRespond(res, 'public' + regexFile[0]);
return;
}
// Vi skal undersøge om der requestes en fil fra admin-mappen
rx = /^\/(admin\/(img\/|css\/|js\/)?[\w-]+\.(html|png|js|css))$/i;
var adminFile = pathname.match(rx);
if(adminFile){
// Hvis der requestes for en fil i admin-mapen er det nødvendigt at
// at checkke om brugersessionen er gyldig.
var cookie = helpers.getCookies(req);
database.verifySession(res, cookie, function(data){
if(helpers.objEmpty(data)){
helpers.redirect(res, '/')
return;
}
helpers.fileRespond(res, adminFile[1]);
});
return;
}
var action = routes[pathname];
if(action){
// Hvis regex'en ikke fandt noget er vi her.
var handler = action[method];
if(handler){
handler(req, res);
return;
}
helpers.respond(res, 'Metode ikke tilladt', 404);
return;
}
else{
helpers.respond(res, 'Ressource findes ikke: ' + pathname, 404)
}
}