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
| var http = require("http"); var connect = require("connect"); var morgan = require("morgan"); var bodyParser = require("body-parser"); var cookieParser = require("cookie-parser"); var session = require("express-session");
var users = require("./config/users.json");
var app = connect();
app.use(morgan("dev"));
app.use(bodyParser());
app.use(cookieParser());
app.use( session({ secret: "my site secret" }) );
app.use(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(); } });
app.use(function(req, res, next) { if ("/" == req.url && "GET" == req.method) { res.writeHead(200, { "Content-Type": "text/html" }); res.end( [ '<form method="POST" action="/login">', "<h1>Login</h1>", "<fieldset>", "<label>Please log in</label>", 'Username: <input type="text" name="user" /><br>', 'Password: <input type="password" name="password" />', "<p><button>Submit</button></p>", "</fieldset>", "</form>" ].join("") ); } else { next(); } });
app.use(function(req, res, next) { if ("/login" == req.url && "POST" == req.method) { res.writeHead(200, { "Content-Type": "text/html" }); if ( !users[req.body.user] || req.body.password != users[req.body.user].password ) { res.end('Bad username/password<br><a href="/">Back</a>'); } else { req.session.logged_in = true; req.session.name = users[req.body.user].name; res.end("Success!"); } } else { next(); } });
app.use(function(req, res, next) { if ("/logout" == req.url) { req.session.logged_in = false; res.writeHead(200); res.end("Logged out!"); } else { next(); } });
http.createServer(app).listen(3000);
|