mirror of
https://github.com/sstent/expressmongotest.git
synced 2026-02-05 22:11:51 +00:00
added private public view to profile -- todo : add same for article view
This commit is contained in:
@@ -2,8 +2,7 @@ var Schema = require('mongoose').Schema;
|
|||||||
|
|
||||||
var ArticleSchema = new Schema({
|
var ArticleSchema = new Schema({
|
||||||
title: {
|
title: {
|
||||||
type: String,
|
type: String
|
||||||
unique: true
|
|
||||||
},
|
},
|
||||||
body: String,
|
body: String,
|
||||||
author: {
|
author: {
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
var mongoose = require('mongoose');
|
var mongoose = require('mongoose');
|
||||||
|
|
||||||
var UserSchema = new mongoose.Schema({
|
var UserSchema = new mongoose.Schema({
|
||||||
username: {type: String, unique: true},
|
username: {type: String, unique: true, required: true},
|
||||||
name: String,
|
name: String,
|
||||||
password: String,
|
password: String
|
||||||
});
|
});
|
||||||
|
|
||||||
UserSchema.methods.recentArticles = function(callback) {
|
UserSchema.methods.recentArticles = function(callback) {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ var maxArticlesPerPage = 5;
|
|||||||
|
|
||||||
module.exports = function(app) {
|
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;
|
var page = req.query.page && parseInt(req.query.page, 10) || 0;
|
||||||
async.parallel([
|
async.parallel([
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@ module.exports = function(app) {
|
|||||||
res.render('articles/new', {title: "New Article"});
|
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,
|
res.render('articles/article', {title: req.article.title,
|
||||||
article: req.article});
|
article: req.article});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -3,9 +3,11 @@
|
|||||||
* GET home page.
|
* GET home page.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
var loggedIn = require('./middleware/logged_in');
|
||||||
|
|
||||||
|
|
||||||
module.exports = function(app) {
|
module.exports = function(app) {
|
||||||
app.get('/', function(req, res){
|
app.get('/', loggedIn, function(req, res){
|
||||||
res.render('index', { title: 'Express' })
|
res.render('index', { title: 'Express' });
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
function loggedIn(req, res, next) {
|
function loggedIn(req, res, next) {
|
||||||
if (! req.session.user) {
|
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 {
|
} else {
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
function notLoggedIn(req, res, next) {
|
function notLoggedIn(req, res, next) {
|
||||||
if (req.session.user) {
|
if (req.session.user) {
|
||||||
res.send('Unauthorized', 401);
|
res.redirect('/users/' + req.session.user.username);
|
||||||
} else {
|
} else {
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ module.exports = function(app) {
|
|||||||
}
|
}
|
||||||
if (user) {
|
if (user) {
|
||||||
req.session.user = user;
|
req.session.user = user;
|
||||||
|
console.log("req.session.user= " + JSON.stringify(req.session.user));
|
||||||
res.redirect('/users');
|
res.redirect('/users');
|
||||||
} else {
|
} else {
|
||||||
res.redirect('/session/new');
|
res.redirect('/session/new');
|
||||||
@@ -26,6 +27,6 @@ module.exports = function(app) {
|
|||||||
|
|
||||||
app.del('/session', function(req, res, next) {
|
app.del('/session', function(req, res, next) {
|
||||||
req.session.destroy();
|
req.session.destroy();
|
||||||
res.redirect('/users');
|
res.redirect('/session/new');
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -4,13 +4,14 @@
|
|||||||
|
|
||||||
var User = require('../data/models/user');
|
var User = require('../data/models/user');
|
||||||
var notLoggedIn = require('./middleware/not_logged_in');
|
var notLoggedIn = require('./middleware/not_logged_in');
|
||||||
|
var loggedIn = require('./middleware/logged_in');
|
||||||
var loadUser = require('./middleware/load_user');
|
var loadUser = require('./middleware/load_user');
|
||||||
var restrictUserToSelf = require('./middleware/restrict_user_to_self');
|
var restrictUserToSelf = require('./middleware/restrict_user_to_self');
|
||||||
var maxUsersPerPage = 5;
|
var maxUsersPerPage = 5;
|
||||||
|
|
||||||
module.exports = function(app) {
|
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;
|
var page = req.query.page && parseInt(req.query.page, 10) || 0;
|
||||||
|
|
||||||
User.count(function(err, count) {
|
User.count(function(err, count) {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ block content
|
|||||||
p
|
p
|
||||||
span Author:
|
span Author:
|
||||||
|
|
||||||
a(href="/users/" + encodeURIComponent(article.author.username))= article.author.full_name
|
a(href="/users/" + encodeURIComponent(article.author.name))= article.author.name
|
||||||
|
|
||||||
p
|
p
|
||||||
a(href="/articles") Back to all articles
|
a(href="/articles") Back to all articles
|
||||||
@@ -1,8 +1,5 @@
|
|||||||
extends ../layout
|
ul
|
||||||
|
- articles.forEach(function(article) {
|
||||||
block content
|
li
|
||||||
ul
|
a(href="/articles/" + encodeURIComponent(article._id))= article.title
|
||||||
- articles.forEach(function(article) {
|
- });
|
||||||
li
|
|
||||||
a(href="/articles/" + encodeURIComponent(article.title))= article.title
|
|
||||||
- });
|
|
||||||
@@ -11,4 +11,7 @@ block content
|
|||||||
label(for="password") Password:<br />
|
label(for="password") Password:<br />
|
||||||
input#password(type="password", name="password")
|
input#password(type="password", name="password")
|
||||||
p
|
p
|
||||||
input(type="submit", value="Log in");
|
input(type="submit", value="Log in");
|
||||||
|
|
||||||
|
p
|
||||||
|
a(href="/users/new") Register New User
|
||||||
@@ -1,14 +1,12 @@
|
|||||||
- if (session.user)
|
- if (session.user)
|
||||||
p
|
p
|
||||||
span Hello
|
span
|
||||||
|
b UserName
|
||||||
span= session.user.name
|
span= session.user.name
|
||||||
span !
|
span
|
||||||
|
b  UserID
|
||||||
|
span= session.user._id
|
||||||
p
|
p
|
||||||
form(method="POST", action="/session")
|
form(method="POST", action="/session")
|
||||||
input(type="hidden", name="_method", value="DELETE")
|
input(type="hidden", name="_method", value="DELETE")
|
||||||
input(type="submit", value="Log out")
|
input(type="submit", value="Log out")
|
||||||
- else
|
|
||||||
p
|
|
||||||
a(href="/session/new") Login
|
|
||||||
span or
|
|
||||||
a(href="/users/new") Register
|
|
||||||
@@ -2,8 +2,17 @@ extends ../layout
|
|||||||
block content
|
block content
|
||||||
h1= user.name
|
h1= user.name
|
||||||
|
|
||||||
|
- if (session.user)
|
||||||
|
h1 Private View
|
||||||
|
- else
|
||||||
|
h1 Public View
|
||||||
|
|
||||||
h2 Recent Articles:
|
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")
|
form(action="/users/" + encodeURIComponent(user.username), method="POST")
|
||||||
|
|||||||
Reference in New Issue
Block a user