-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
60 lines (60 loc) · 2.16 KB
/
server.js
File metadata and controls
60 lines (60 loc) · 2.16 KB
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
/* Module dependecies */
var connect = require("connect"),
users = require("./users"), /* User authentication list provided by users.json */
RedisStore = require("connect-redis")(connect); /* Mantains the user session although the active service shutdown */
var server = connect(
connect.logger("dev"),
connect.bodyParser(),
connect.cookieParser(),
connect.session({ store: new RedisStore, secret: "my app secret" }),
function (req, res, next) {
if ("/" == req.url && req.session.logged_in) {
res.writeHead(200, { "Content-Type": "text/html" });
res.end(
"Welcome back, <b>" + req.session.name + "</b>. "
+ "<a href='/logout'>Logout</a>"
);
} else {
next();
}
}, function (req, res, next) {
if ("/" == req.url && "GET" == req.method) {
res.writeHead(200, { "Content-Type": "text/html" });
res.end([
"<form action='/login' method='POST'>",
" <fieldset>",
" <legend>Please log in</legend>",
" <p>User: <input type='text' name='user'></p>",
" <p>Password: <input type='password' name='password'></p>",
" <button>Submit</button>",
" </fieldset>",
"</form>"
].join(""));
} else {
next();
}
}, function (req, res, next) {
if ("/login" == req.url && "POST" == req.method) {
res.writeHead(200);
if (!users[req.body.user] || req.body.password != users[req.body.user].password) {
console.log("Bad user name");
} else {
req.session.logged_in = true;
req.session.name = users[req.body.user].name;
res.end("Authenticated!");
}
} else {
next();
}
}, function (req, res, next) {
if ("/logout" == req.url) {
req.session.logged_in = false;
res.writeHead(200);
res.end("Logged out");
} else {
next();
}
}
);
/* Listen */
server.listen(3000);