diff --git a/examples/README.md b/examples/README.md deleted file mode 100644 index c19ed30a25..0000000000 --- a/examples/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# Express examples - -This page contains list of examples using Express. - -- [auth](./auth) - Authentication with login and password -- [content-negotiation](./content-negotiation) - HTTP content negotiation -- [cookie-sessions](./cookie-sessions) - Working with cookie-based sessions -- [cookies](./cookies) - Working with cookies -- [downloads](./downloads) - Transferring files to client -- [ejs](./ejs) - Working with Embedded JavaScript templating (ejs) -- [error-pages](./error-pages) - Creating error pages -- [error](./error) - Working with error middleware -- [hello-world](./hello-world) - Simple request handler -- [markdown](./markdown) - Markdown as template engine -- [multi-router](./multi-router) - Working with multiple Express routers -- [multipart](./multipart) - Accepting multipart-encoded forms -- [mvc](./mvc) - MVC-style controllers -- [online](./online) - Tracking online user activity with `online` and `redis` packages -- [params](./params) - Working with route parameters -- [resource](./resource) - Multiple HTTP operations on the same resource -- [route-map](./route-map) - Organizing routes using a map -- [route-middleware](./route-middleware) - Working with route middleware -- [route-separation](./route-separation) - Organizing routes per each resource -- [search](./search) - Search API -- [session](./session) - User sessions -- [static-files](./static-files) - Serving static files -- [vhost](./vhost) - Working with virtual hosts -- [view-constructor](./view-constructor) - Rendering views dynamically -- [view-locals](./view-locals) - Saving data in request object between middleware calls -- [web-service](./web-service) - Simple API service diff --git a/examples/auth/index.js b/examples/auth/index.js deleted file mode 100644 index 36205d0f99..0000000000 --- a/examples/auth/index.js +++ /dev/null @@ -1,133 +0,0 @@ -'use strict' - -/** - * Module dependencies. - */ - -var express = require('../..'); -var hash = require('pbkdf2-password')() -var path = require('path'); -var session = require('express-session'); - -var app = module.exports = express(); - -// config - -app.set('view engine', 'ejs'); -app.set('views', path.join(__dirname, 'views')); - -// middleware - -app.use(express.urlencoded({ extended: false })) -app.use(session({ - resave: false, // don't save session if unmodified - saveUninitialized: false, // don't create session until something stored - secret: 'shhhh, very secret' -})); - -// Session-persisted message middleware - -app.use(function(req, res, next){ - var err = req.session.error; - var msg = req.session.success; - delete req.session.error; - delete req.session.success; - res.locals.message = ''; - if (err) res.locals.message = '
' + err + '
'; - if (msg) res.locals.message = '' + msg + '
'; - next(); -}); - -// dummy database - -var users = { - tj: { name: 'tj' } -}; - -// when you create a user, generate a salt -// and hash the password ('foobar' is the pass here) - -hash({ password: 'foobar' }, function (err, pass, salt, hash) { - if (err) throw err; - // store the salt & hash in the "db" - users.tj.salt = salt; - users.tj.hash = hash; -}); - - -// Authenticate using our plain-object database of doom! - -function authenticate(name, pass, fn) { - if (!module.parent) console.log('authenticating %s:%s', name, pass); - var user = users[name]; - // query the db for the given username - if (!user) return fn(null, null) - // apply the same algorithm to the POSTed password, applying - // the hash against the pass / salt, if there is a match we - // found the user - hash({ password: pass, salt: user.salt }, function (err, pass, salt, hash) { - if (err) return fn(err); - if (hash === user.hash) return fn(null, user) - fn(null, null) - }); -} - -function restrict(req, res, next) { - if (req.session.user) { - next(); - } else { - req.session.error = 'Access denied!'; - res.redirect('/login'); - } -} - -app.get('/', function(req, res){ - res.redirect('/login'); -}); - -app.get('/restricted', restrict, function(req, res){ - res.send('Wahoo! restricted area, click to logout'); -}); - -app.get('/logout', function(req, res){ - // destroy the user's session to log them out - // will be re-created next request - req.session.destroy(function(){ - res.redirect('/'); - }); -}); - -app.get('/login', function(req, res){ - res.render('login'); -}); - -app.post('/login', function (req, res, next) { - authenticate(req.body.username, req.body.password, function(err, user){ - if (err) return next(err) - if (user) { - // Regenerate session when signing in - // to prevent fixation - req.session.regenerate(function(){ - // Store the user's primary key - // in the session store to be retrieved, - // or in this case the entire user object - req.session.user = user; - req.session.success = 'Authenticated as ' + user.name - + ' click to logout. ' - + ' You may now access /restricted.'; - res.redirect('back'); - }); - } else { - req.session.error = 'Authentication failed, please check your ' - + ' username and password.' - + ' (use "tj" and "foobar")'; - res.redirect('/login'); - } - }); -}); - -/* istanbul ignore next */ -if (!module.parent) { - app.listen(3000); - console.log('Express started on port 3000'); -} diff --git a/examples/auth/views/foot.ejs b/examples/auth/views/foot.ejs deleted file mode 100644 index b605728ee2..0000000000 --- a/examples/auth/views/foot.ejs +++ /dev/null @@ -1,2 +0,0 @@ -