mirror of
https://github.com/sstent/expressmongotest.git
synced 2026-01-25 08:34:53 +00:00
jsut setting up
This commit is contained in:
36
chapter21/01_express_boilerplate_app.js
Normal file
36
chapter21/01_express_boilerplate_app.js
Normal file
@@ -0,0 +1,36 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var express = require('express')
|
||||
, routes = require('./routes');
|
||||
|
||||
var app = module.exports = express.createServer();
|
||||
|
||||
// Configuration
|
||||
|
||||
app.configure(function(){
|
||||
app.set('views', __dirname + '/views');
|
||||
app.set('view engine', 'jade');
|
||||
app.use(express.bodyParser());
|
||||
app.use(express.methodOverride());
|
||||
app.use(app.router);
|
||||
app.use(express.static(__dirname + '/public'));
|
||||
});
|
||||
|
||||
app.configure('development', function(){
|
||||
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
|
||||
});
|
||||
|
||||
app.configure('production', function(){
|
||||
app.use(express.errorHandler());
|
||||
});
|
||||
|
||||
// Routes
|
||||
|
||||
app.get('/', routes.index);
|
||||
|
||||
app.listen(3000, function(){
|
||||
console.log("Express server listening on port %d in %s mode", app.address().port,
|
||||
app.settings.env);
|
||||
});
|
||||
9
chapter21/02_new_version_routes.js
Normal file
9
chapter21/02_new_version_routes.js
Normal file
@@ -0,0 +1,9 @@
|
||||
/*
|
||||
* GET home page.
|
||||
*/
|
||||
|
||||
module.exports = function(app) {
|
||||
app.get('/', function(req, res){
|
||||
res.render('index', { title: 'Express' });
|
||||
});
|
||||
};
|
||||
11
chapter21/03_user_routes.js
Normal file
11
chapter21/03_user_routes.js
Normal file
@@ -0,0 +1,11 @@
|
||||
/*
|
||||
* User Routes
|
||||
*/
|
||||
|
||||
module.exports = function(app) {
|
||||
|
||||
app.get('/users/:name', function(req, res){
|
||||
res.render('users/profile', {title: 'User profile'});
|
||||
});
|
||||
|
||||
};
|
||||
3
chapter21/04_users_list.jade
Normal file
3
chapter21/04_users_list.jade
Normal file
@@ -0,0 +1,3 @@
|
||||
h1 Users
|
||||
|
||||
p User list should be here
|
||||
21
chapter21/05_fake_users.json
Normal file
21
chapter21/05_fake_users.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
|
||||
"frank": {
|
||||
"username": "frank",
|
||||
"name": "Frank Sinatra",
|
||||
"bio": "Singer"
|
||||
},
|
||||
|
||||
"jobim": {
|
||||
"username": "jobim",
|
||||
"name": "Antonio Carlos Jobim",
|
||||
"bio": "Composer"
|
||||
},
|
||||
|
||||
"fred": {
|
||||
"username": "fred",
|
||||
"name": "Fred Astaire",
|
||||
"bio": "Dancer and Actor"
|
||||
}
|
||||
|
||||
}
|
||||
45
chapter21/06_completed_user_route_listeners.js
Normal file
45
chapter21/06_completed_user_route_listeners.js
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* User Routes
|
||||
*/
|
||||
|
||||
var users = require('../data/users');
|
||||
|
||||
module.exports = function(app) {
|
||||
|
||||
app.get('/users', function(req, res){
|
||||
res.render('users/index', {title: 'Users', users: users});
|
||||
});
|
||||
|
||||
app.get('/users/new', function(req, res) {
|
||||
res.render('users/new', {title: "New User"});
|
||||
});
|
||||
|
||||
app.get('/users/:name', function(req, res, next){
|
||||
var user = users[req.params.name];
|
||||
if (user) {
|
||||
res.render('users/profile', {title: 'User profile', user: user});
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
app.post('/users', function(req, res) {
|
||||
if (users[req.body.username]) {
|
||||
res.send('Conflict', 409);
|
||||
} else {
|
||||
users[req.body.username] = req.body;
|
||||
res.redirect('/users');
|
||||
}
|
||||
});
|
||||
|
||||
app.del('/users/:name', function(req, res, next) {
|
||||
if (users[req.params.name]) {
|
||||
delete users[req.params.name];
|
||||
res.redirect('/users');
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
});
|
||||
|
||||
};
|
||||
10
chapter21/07_user_list.jade
Normal file
10
chapter21/07_user_list.jade
Normal file
@@ -0,0 +1,10 @@
|
||||
h1 Users
|
||||
|
||||
p
|
||||
a(href="/users/new") Create new profile
|
||||
|
||||
ul
|
||||
- for(var username in users) {
|
||||
li
|
||||
a(href="/users/" + encodeURIComponent(username))= users[username].name
|
||||
- };
|
||||
8
chapter21/08_user_profile.jade
Normal file
8
chapter21/08_user_profile.jade
Normal file
@@ -0,0 +1,8 @@
|
||||
h1= user.name
|
||||
|
||||
h2 Bio
|
||||
p= user.bio
|
||||
|
||||
form(action="/users/" + encodeURIComponent(user.username), method="POST")
|
||||
input(name="_method", type="hidden", value="DELETE")
|
||||
input(type="submit", value="Delete")
|
||||
14
chapter21/09_new_user_form.jade
Normal file
14
chapter21/09_new_user_form.jade
Normal file
@@ -0,0 +1,14 @@
|
||||
h1 New User
|
||||
|
||||
form(method="POST", action="/users")
|
||||
p
|
||||
label(for="username") Username<br />
|
||||
input#username(name="username")
|
||||
p
|
||||
label(for="name") Name<br />
|
||||
input#name(name="name")
|
||||
p
|
||||
label(for="bio") Bio<br />
|
||||
textarea#bio(name="bio")
|
||||
p
|
||||
input(type="submit", value="Create")
|
||||
34
chapter21/10_session_routes.js
Normal file
34
chapter21/10_session_routes.js
Normal file
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Session Routes
|
||||
*/
|
||||
|
||||
var users = require('../data/users');
|
||||
|
||||
module.exports = function(app) {
|
||||
|
||||
app.dynamicHelpers({
|
||||
session: function(req, res) {
|
||||
return req.session;
|
||||
}
|
||||
});
|
||||
|
||||
app.get('/session/new', function(req, res) {
|
||||
res.render('session/new', {title: "Log in"});
|
||||
});
|
||||
|
||||
app.post('/session', function(req, res) {
|
||||
if (users[req.body.username] &&
|
||||
users[req.body.username].password === req.body.password) {
|
||||
req.session.user = users[req.body.username];
|
||||
res.redirect('/users');
|
||||
} else {
|
||||
res.redirect('/session/new')
|
||||
}
|
||||
});
|
||||
|
||||
app.del('/session', function(req, res, next) {
|
||||
req.session.destroy();
|
||||
res.redirect('/users');
|
||||
});
|
||||
|
||||
};
|
||||
19
chapter21/11_header_user_partial.jade
Normal file
19
chapter21/11_header_user_partial.jade
Normal file
@@ -0,0 +1,19 @@
|
||||
- if (session.user) {
|
||||
|
||||
p
|
||||
span Hello
|
||||
span= session.user.name
|
||||
span !
|
||||
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
|
||||
|
||||
- }
|
||||
8
chapter21/12_changed_layout_file.jade
Normal file
8
chapter21/12_changed_layout_file.jade
Normal file
@@ -0,0 +1,8 @@
|
||||
!!!
|
||||
html
|
||||
head
|
||||
title= title
|
||||
link(rel='stylesheet', href='/stylesheets/style.css')
|
||||
body
|
||||
header!= partial('session/user')
|
||||
section#main!= body
|
||||
11
chapter21/13_login_form.jade
Normal file
11
chapter21/13_login_form.jade
Normal file
@@ -0,0 +1,11 @@
|
||||
h1 Log in
|
||||
|
||||
form(method="POST", action="/session")
|
||||
p
|
||||
label(for="username") User name:<br />
|
||||
input#username(name="username")
|
||||
p
|
||||
label(for="password") Password:<br />
|
||||
input#password(type="password", name="password")
|
||||
p
|
||||
input(type="submit", value="Log in");
|
||||
17
chapter21/14_user_signup_new_version.jade
Normal file
17
chapter21/14_user_signup_new_version.jade
Normal file
@@ -0,0 +1,17 @@
|
||||
h1 New User
|
||||
|
||||
form(method="POST", action="/users")
|
||||
p
|
||||
label(for="username") Username<br />
|
||||
input#username(name="username")
|
||||
p
|
||||
label(for="name") Name<br />
|
||||
input#name(name="name")
|
||||
p
|
||||
label(for="password") Password<br />
|
||||
input#password(type="password", name="password")
|
||||
p
|
||||
label(for="bio") Bio<br />
|
||||
textarea#bio(name="bio")
|
||||
p
|
||||
input(type="submit", value="Create")
|
||||
9
chapter21/15_not_logged_in_middleware.js
Normal file
9
chapter21/15_not_logged_in_middleware.js
Normal file
@@ -0,0 +1,9 @@
|
||||
function notLoggedIn(req, res, next) {
|
||||
if (req.session.user) {
|
||||
res.send('Unauthorized', 401);
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = notLoggedIn;
|
||||
35
chapter21/16_session_routes_new_version.js
Normal file
35
chapter21/16_session_routes_new_version.js
Normal file
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Session Routes
|
||||
*/
|
||||
|
||||
var users = require('../data/users');
|
||||
var notLoggedIn = require('./middleware/not_logged_in');
|
||||
|
||||
module.exports = function(app) {
|
||||
|
||||
app.dynamicHelpers({
|
||||
session: function(req, res) {
|
||||
return req.session;
|
||||
}
|
||||
});
|
||||
|
||||
app.get('/session/new', notLoggedIn, function(req, res) {
|
||||
res.render('session/new', {title: "Log in"});
|
||||
});
|
||||
|
||||
app.post('/session', notLoggedIn, function(req, res) {
|
||||
if (users[req.body.username] &&
|
||||
users[req.body.username].password === req.body.password) {
|
||||
req.session.user = users[req.body.username];
|
||||
res.redirect('/users');
|
||||
} else {
|
||||
res.redirect('/session/new');
|
||||
}
|
||||
});
|
||||
|
||||
app.del('/session', function(req, res, next) {
|
||||
req.session.destroy();
|
||||
res.redirect('/users');
|
||||
});
|
||||
|
||||
};
|
||||
45
chapter21/17_user_routes_new_version.js
Normal file
45
chapter21/17_user_routes_new_version.js
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* User Routes
|
||||
*/
|
||||
|
||||
var users = require('../data/users');
|
||||
var notLoggedIn = require('./middleware/not_logged_in');
|
||||
|
||||
module.exports = function(app) {
|
||||
|
||||
app.get('/users', function(req, res){
|
||||
res.render('users/index', {title: 'Users', users: users});
|
||||
});
|
||||
|
||||
app.get('/users/new', notLoggedIn, function(req, res) {
|
||||
res.render('users/new', {title: "New User"});
|
||||
});
|
||||
|
||||
app.get('/users/:name', function(req, res, next){
|
||||
var user = users[req.params.name];
|
||||
if (user) {
|
||||
res.render('users/profile', {title: 'User profile', user: user});
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
});
|
||||
|
||||
app.post('/users', notLoggedIn, function(req, res) {
|
||||
if (users[req.body.username]) {
|
||||
res.send('Conflict', 409);
|
||||
} else {
|
||||
users[req.body.username] = req.body;
|
||||
res.redirect('/users');
|
||||
}
|
||||
});
|
||||
|
||||
app.del('/users/:name', function(req, res, next) {
|
||||
if (users[req.params.name]) {
|
||||
delete users[req.params.name];
|
||||
res.redirect('/users');
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
});
|
||||
|
||||
};
|
||||
12
chapter21/18_load_user_middleware.js
Normal file
12
chapter21/18_load_user_middleware.js
Normal file
@@ -0,0 +1,12 @@
|
||||
var users = require('../../data/users');
|
||||
|
||||
function loadUser(req, res, next) {
|
||||
var user = req.user = users[req.params.name];
|
||||
if (! user) {
|
||||
res.send('Not found', 404);
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = loadUser;
|
||||
37
chapter21/19_user_routes_new_version.js
Normal file
37
chapter21/19_user_routes_new_version.js
Normal file
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* User Routes
|
||||
*/
|
||||
|
||||
var users = require('../data/users');
|
||||
var notLoggedIn = require('./middleware/not_logged_in');
|
||||
var loadUser = require('./middleware/load_user');
|
||||
|
||||
module.exports = function(app) {
|
||||
|
||||
app.get('/users', function(req, res){
|
||||
res.render('users/index', {title: 'Users', users: users});
|
||||
});
|
||||
|
||||
app.get('/users/new', notLoggedIn, function(req, res) {
|
||||
res.render('users/new', {title: "New User"});
|
||||
});
|
||||
|
||||
app.get('/users/:name', loadUser, function(req, res, next){
|
||||
res.render('users/profile', {title: 'User profile', user: req.user});
|
||||
});
|
||||
|
||||
app.post('/users', notLoggedIn, function(req, res) {
|
||||
if (users[req.body.username]) {
|
||||
res.send('Conflict', 409);
|
||||
} else {
|
||||
users[req.body.username] = req.body;
|
||||
res.redirect('/users');
|
||||
}
|
||||
});
|
||||
|
||||
app.del('/users/:name', loadUser, function(req, res, next) {
|
||||
delete users[req.user.username];
|
||||
res.redirect('/users');
|
||||
});
|
||||
|
||||
};
|
||||
9
chapter21/20_restrict_user_to_self_middleware.js
Normal file
9
chapter21/20_restrict_user_to_self_middleware.js
Normal file
@@ -0,0 +1,9 @@
|
||||
function restrictUserToSelf(req, res, next) {
|
||||
if (! req.session.user || req.session.user.username !== req.user.username) {
|
||||
res.send('Unauthorized', 401);
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = restrictUserToSelf;
|
||||
Reference in New Issue
Block a user