Skip to content

Commit

Permalink
save new users to couch
Browse files Browse the repository at this point in the history
  • Loading branch information
adamvduke committed Jan 9, 2013
1 parent 8e9437a commit 89ca38a
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 20 deletions.
12 changes: 7 additions & 5 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ var express = require('express')
, apiRoutes = require('./routes/api.js')
, sessionRoutes = require('./routes/sessions.js')
, http = require('http')
, path = require('path');
, path = require('path')
, flash = require('connect-flash');

var app = express();
process.setMaxListeners(0);
Expand All @@ -22,11 +23,11 @@ var setLoggedIn = function(request, response, next){
};

// middleware to force a login for requests that require a session
function requiresLogin(req, res, next) {
if (req.session.user) {
function requiresLogin(request, response, next) {
if (request.session.user) {
next();
} else {
res.redirect('/sessions/new?redir=' + req.url);
response.redirect('/sessions/new?redir=' + request.url);
}
};

Expand All @@ -40,8 +41,9 @@ app.configure(function(){
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(express.session({ cookie: { maxAge: 60000 }}));
app.use(setLoggedIn);
app.use(flash());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
});
Expand Down
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
"qs": "0.4.2",
"express": "3.0.0rc3",
"felix-couchdb": "1.0.3",
"jade": "*"
"jade": "*",
"bcrypt": "0.7.2",
"connect-flash": "*"
}
}
33 changes: 23 additions & 10 deletions routes/users.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
var db = require('../lib/db.js').db();
var bcrypt = require('bcrypt');
var util = require('util');

exports.index = function(request, response) {
db.view("users", "all", {include_docs: true}, function(error, result){
Expand All @@ -11,19 +13,30 @@ exports.index = function(request, response) {
};

exports.new = function(request, response) {
response.render('users/new');
response.render('users/new', {message: request.flash('warn')});
};

exports.create = function(request, response) {
var doc = {
fullname: request.body.fullname,
username: request.body.username,
password: request.body.password,
type: "user",
applications: []
};
db.saveDoc(doc, function(error, result){
response.redirect('users/' + result.id);
bcrypt.genSalt(10, function(err, salt) {
bcrypt.hash(request.body.password, salt, function(err, hash) {
var doc = {
_id: request.body.email,
fullname: request.body.fullname,
email: request.body.email,
password: hash,
type: "user",
applications: []
};
db.saveDoc(doc, function(error, result){
if(error && error.error === 'conflict')
{
request.flash('warn', 'There is already an account associated with that email address');
response.redirect('users/new');
return;
}
response.redirect('users/' + result.id);
});
});
});
};

Expand Down
10 changes: 6 additions & 4 deletions views/users/new.jade
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
extends ../layout

block content
div.flash
= message

h1 New User

Expand All @@ -11,16 +13,16 @@ block content
input(type="text", name="fullname")
div.row
div.six.columns
label Username:
input(type="text", name="username")
label Email:
input(type="text", name="email")
div.row
div.six.columns
label Password:
input(type="text", name="password")
input(type="password", name="password")
div.row
div.six.columns
label Password Confirmation:
input(type="text", name="password_confirmation")
input(type="password", name="password_confirmation")
div.row
div.six.columns
input(type="submit", value="Submit")

0 comments on commit 89ca38a

Please sign in to comment.