From 2dbbb3c381b30a37a22cdbd082e16951f131f1a2 Mon Sep 17 00:00:00 2001 From: shaunwong Date: Wed, 15 May 2013 16:47:36 -0700 Subject: [PATCH] Added simple session example and updated readmes --- history.md | 15 +++++++++------ package.json | 2 +- readme.md | 8 ++++---- src/controllers/private.coffee | 17 +++++++++++++++++ src/index.coffee | 8 +++++++- src/routes.coffee | 13 +++++++++++++ views/401.jade | 2 ++ views/404.jade | 1 + 8 files changed, 54 insertions(+), 12 deletions(-) create mode 100644 src/controllers/private.coffee create mode 100644 views/401.jade diff --git a/history.md b/history.md index 419ff496..5afe0389 100644 --- a/history.md +++ b/history.md @@ -1,7 +1,10 @@ -1.8 -================== +# 1.8 - * added history.md for change tracking - * updated stable dependencies - * added bootstrap-stylus - * updated readme.md to better reflect technologies and dependencies \ No newline at end of file +- added history.md for change tracking +- updated stable dependencies +- added bootstrap-stylus +- updated readme.md to better reflect technologies and dependencies +- added session example + - see `./src/controllers/private.coffee` for examples of privates controllers + - see `./src/routes.coffee` for auth through routing example + - see `./src/index.coffee` for session config example \ No newline at end of file diff --git a/package.json b/package.json index 6f3682a1..199acae8 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ , "markdown": "0.4.0" , "passport": "0.1.16" , "which": "1.0.5" - , "mongoose": "3.6.*" + , "mongoose": "3.6.x" , "wrench": "1.4.4" }, "scripts": { "install": "node node_modules/coffee-script/bin/cake build", diff --git a/readme.md b/readme.md index 53b50ec1..c3265b95 100644 --- a/readme.md +++ b/readme.md @@ -1,4 +1,4 @@ -# Express Coffee Template 7 (1.7) +# Express Coffee Template 8 (1.8) This is a Node Express CoffeeScript Stack Template @@ -8,15 +8,15 @@ to use coffee-script and stylus for the client side. ## Technologies This is a template that can be used to create nodejs applications using -* Node v0.8.* +* Node v0.8.x * Express v3.0.5 * CoffeeScript! v1.5.0 * Jade v0.26.0 -* Stylus v0.27.* +* Stylus v0.27.x * bootstrap-stylus 2.3.1 (not a npm module) * Nib v0.9.0 * Connect Assets v2.3.3 -* MongoDB +* MongoDB / Mongoose 3.6.x ## Requirements diff --git a/src/controllers/private.coffee b/src/controllers/private.coffee new file mode 100644 index 00000000..aed9b26d --- /dev/null +++ b/src/controllers/private.coffee @@ -0,0 +1,17 @@ +module.exports = + + # Lists all posts + index: (req, res) -> + res.send 'This is a private page.' + + # Create a session + create: (req, res) -> + req.session.authorized = 'test' + res.redirect '/private' + + # Destroy a session + destroy: (req, res) -> + delete req.session.authorized + res.redirect '/private' + + \ No newline at end of file diff --git a/src/index.coffee b/src/index.coffee index 5adce651..0984d639 100644 --- a/src/index.coffee +++ b/src/index.coffee @@ -29,7 +29,13 @@ else app.use assets() # Set the public folder as static assets. app.use express.static(process.cwd() + '/public') - +# Express Session +store = new express.session.MemoryStore +app.use express.cookieParser() +app.use express.session( + secret: 'shhh' + store: store +) # Set View Engine. app.set 'view engine', 'jade' diff --git a/src/routes.coffee b/src/routes.coffee index a8c8bd2a..6c05bcb6 100644 --- a/src/routes.coffee +++ b/src/routes.coffee @@ -5,6 +5,19 @@ # We are using method names to determine controller actions for clearness. module.exports = (app) -> + + # simple session authorization + checkAuth = (req, res, next) -> + unless req.session.authorized + res.statusCode = 401 + res.render '401', 401 + else + next() + + + app.all '/private', checkAuth, (req, res, next) -> + routeMvc('private', 'index', req, res, next) + # - _/_ -> controllers/index/index method app.all '/', (req, res, next) -> routeMvc('index', 'index', req, res, next) diff --git a/views/401.jade b/views/401.jade new file mode 100644 index 00000000..15047812 --- /dev/null +++ b/views/401.jade @@ -0,0 +1,2 @@ +h1 401 +p Unauthorized access. \ No newline at end of file diff --git a/views/404.jade b/views/404.jade index 5f3a724a..a95fad7f 100644 --- a/views/404.jade +++ b/views/404.jade @@ -1 +1,2 @@ +h1 404 p Sorry! that link doesn't exist.