From 7b6a0df4a5abf8846e6db767d8a542b383c6ac93 Mon Sep 17 00:00:00 2001 From: sstent Date: Thu, 17 Jan 2013 17:30:16 -0500 Subject: [PATCH] added private public view to profile -- todo : add same for article view --- test/data/schemas/article.js | 3 +-- test/data/schemas/user.js | 4 ++-- test/routes/articles.js | 4 ++-- test/routes/index.js | 6 ++++-- test/routes/middleware/logged_in.js | 3 ++- test/routes/middleware/not_logged_in.js | 2 +- test/routes/session.js | 3 ++- test/routes/users.js | 3 ++- test/views/articles/article.jade | 2 +- test/views/articles/list.jade | 13 +++++-------- test/views/session/new.jade | 5 ++++- test/views/session/user.jade | 14 ++++++-------- test/views/users/profile.jade | 11 ++++++++++- 13 files changed, 42 insertions(+), 31 deletions(-) diff --git a/test/data/schemas/article.js b/test/data/schemas/article.js index 3d01bb4..7809a9a 100644 --- a/test/data/schemas/article.js +++ b/test/data/schemas/article.js @@ -2,8 +2,7 @@ var Schema = require('mongoose').Schema; var ArticleSchema = new Schema({ title: { - type: String, - unique: true + type: String }, body: String, author: { diff --git a/test/data/schemas/user.js b/test/data/schemas/user.js index 270ce6a..5949928 100644 --- a/test/data/schemas/user.js +++ b/test/data/schemas/user.js @@ -1,9 +1,9 @@ var mongoose = require('mongoose'); var UserSchema = new mongoose.Schema({ - username: {type: String, unique: true}, + username: {type: String, unique: true, required: true}, name: String, - password: String, + password: String }); UserSchema.methods.recentArticles = function(callback) { diff --git a/test/routes/articles.js b/test/routes/articles.js index afc5f55..b78b2e8 100644 --- a/test/routes/articles.js +++ b/test/routes/articles.js @@ -13,7 +13,7 @@ var maxArticlesPerPage = 5; module.exports = function(app) { - app.get('/articles', function(req, res, next){ + app.get('/articles', loggedIn, function(req, res, next){ var page = req.query.page && parseInt(req.query.page, 10) || 0; async.parallel([ @@ -57,7 +57,7 @@ module.exports = function(app) { res.render('articles/new', {title: "New Article"}); }); - app.get('/articles/:title', loadArticle, function(req, res, next){ + app.get('/articles/:_id', loadArticle, function(req, res, next){ res.render('articles/article', {title: req.article.title, article: req.article}); }); diff --git a/test/routes/index.js b/test/routes/index.js index 04f3b9b..c591300 100644 --- a/test/routes/index.js +++ b/test/routes/index.js @@ -3,9 +3,11 @@ * GET home page. */ +var loggedIn = require('./middleware/logged_in'); + module.exports = function(app) { - app.get('/', function(req, res){ - res.render('index', { title: 'Express' }) + app.get('/', loggedIn, function(req, res){ + res.render('index', { title: 'Express' }); }); }; \ No newline at end of file diff --git a/test/routes/middleware/logged_in.js b/test/routes/middleware/logged_in.js index f726997..d09a700 100644 --- a/test/routes/middleware/logged_in.js +++ b/test/routes/middleware/logged_in.js @@ -1,6 +1,7 @@ function loggedIn(req, res, next) { if (! req.session.user) { - res.send('Forbidden. Please log in first.', 403); + //res.send('Forbidden. Please log in first.', 403); + res.redirect('/session/new'); } else { next(); } diff --git a/test/routes/middleware/not_logged_in.js b/test/routes/middleware/not_logged_in.js index e6c82e1..bdfebe2 100644 --- a/test/routes/middleware/not_logged_in.js +++ b/test/routes/middleware/not_logged_in.js @@ -1,6 +1,6 @@ function notLoggedIn(req, res, next) { if (req.session.user) { - res.send('Unauthorized', 401); + res.redirect('/users/' + req.session.user.username); } else { next(); } diff --git a/test/routes/session.js b/test/routes/session.js index 1e48d8f..66c2497 100644 --- a/test/routes/session.js +++ b/test/routes/session.js @@ -17,6 +17,7 @@ module.exports = function(app) { } if (user) { req.session.user = user; + console.log("req.session.user= " + JSON.stringify(req.session.user)); res.redirect('/users'); } else { res.redirect('/session/new'); @@ -26,6 +27,6 @@ module.exports = function(app) { app.del('/session', function(req, res, next) { req.session.destroy(); - res.redirect('/users'); + res.redirect('/session/new'); }); }; \ No newline at end of file diff --git a/test/routes/users.js b/test/routes/users.js index b923acc..4f33ad1 100644 --- a/test/routes/users.js +++ b/test/routes/users.js @@ -4,13 +4,14 @@ var User = require('../data/models/user'); var notLoggedIn = require('./middleware/not_logged_in'); +var loggedIn = require('./middleware/logged_in'); var loadUser = require('./middleware/load_user'); var restrictUserToSelf = require('./middleware/restrict_user_to_self'); var maxUsersPerPage = 5; module.exports = function(app) { - app.get('/users', function(req, res, next){ + app.get('/users', loggedIn, function(req, res, next){ var page = req.query.page && parseInt(req.query.page, 10) || 0; User.count(function(err, count) { diff --git a/test/views/articles/article.jade b/test/views/articles/article.jade index 27bdbd7..5815ef2 100644 --- a/test/views/articles/article.jade +++ b/test/views/articles/article.jade @@ -9,7 +9,7 @@ block content p span Author:   - a(href="/users/" + encodeURIComponent(article.author.username))= article.author.full_name + a(href="/users/" + encodeURIComponent(article.author.name))= article.author.name p a(href="/articles") Back to all articles \ No newline at end of file diff --git a/test/views/articles/list.jade b/test/views/articles/list.jade index 7483de4..ead5ec7 100644 --- a/test/views/articles/list.jade +++ b/test/views/articles/list.jade @@ -1,8 +1,5 @@ -extends ../layout - -block content - ul - - articles.forEach(function(article) { - li - a(href="/articles/" + encodeURIComponent(article.title))= article.title - - }); \ No newline at end of file +ul + - articles.forEach(function(article) { + li + a(href="/articles/" + encodeURIComponent(article._id))= article.title + - }); \ No newline at end of file diff --git a/test/views/session/new.jade b/test/views/session/new.jade index 3caf63f..b01c64a 100644 --- a/test/views/session/new.jade +++ b/test/views/session/new.jade @@ -11,4 +11,7 @@ block content label(for="password") Password:
input#password(type="password", name="password") p - input(type="submit", value="Log in"); \ No newline at end of file + input(type="submit", value="Log in"); + + p + a(href="/users/new") Register New User \ No newline at end of file diff --git a/test/views/session/user.jade b/test/views/session/user.jade index f0a4632..2b4b036 100644 --- a/test/views/session/user.jade +++ b/test/views/session/user.jade @@ -1,14 +1,12 @@ - if (session.user) p - span Hello  + span + b UserName  span= session.user.name - span ! + span + b  UserID  + span= session.user._id p form(method="POST", action="/session") input(type="hidden", name="_method", value="DELETE") - input(type="submit", value="Log out") -- else - p - a(href="/session/new") Login - span  or  - a(href="/users/new") Register \ No newline at end of file + input(type="submit", value="Log out") \ No newline at end of file diff --git a/test/views/users/profile.jade b/test/views/users/profile.jade index 63a88f0..7a4bd0d 100644 --- a/test/views/users/profile.jade +++ b/test/views/users/profile.jade @@ -2,8 +2,17 @@ extends ../layout block content h1= user.name + - if (session.user) + h1 Private View + - else + h1 Public View + h2 Recent Articles: - p!= partial('articles/list', {articles: recentArticles }) + ul + - recentArticles.forEach(function(article) { + li + a(href="/articles/" + encodeURIComponent(article._id))= article.title + - }); form(action="/users/" + encodeURIComponent(user.username), method="POST")