Duplicate user, error handling, password in fixture

This commit is contained in:
Gabor Javorszky 2013-05-27 22:03:13 +01:00
parent 18166337b8
commit 29bfcd3a3f
4 changed files with 35 additions and 21 deletions

View File

@ -68,7 +68,8 @@
connection: {
filename: './core/shared/data/testdb.db'
},
debug: true
debug: false
// debug: true
},
staging: {},

View File

@ -64,9 +64,9 @@
console.log('user found: ', user);
req.session.user = "ghostadmin";
res.redirect(req.query.redirect || '/ghost/');
}, function (err) {
}, function (error) {
// Do something here to signal the reason for an error
console.log(err.stack);
req.flash('error', error.message);
res.redirect('/ghost/login/');
});
},
@ -78,16 +78,19 @@
});
},
'doRegister': function (req, res) {
// console.log(req.body);
if (req.body.email_address !== '' && req.body.password.length > 5) {
var email = req.body.email_address,
password = req.body.password;
if (email !== '' && password.length > 5) {
api.users.add({
email_address: req.body.email_address,
password: req.body.password
email_address: email,
password: password
}).then(function (user) {
console.log('user added', user);
res.redirect('/ghost/login/');
}, function (error) {
console.log('there was an error', error);
req.flash('error', error.message);
res.redirect('/ghost/register/');
});
} else {
req.flash('error', "The password is too short. Have at least 6 characters in there");

View File

@ -50,15 +50,16 @@ module.exports = {
users: [
{
"id": "1",
"username": "johnonolan",
"id": "1",
"username": "johnonolan",
"first_name": "John",
"last_name": "O'Nolan",
"password": "$2a$10$.pb3wOEhbEPvArvOBB.iyuKslBjC7lSXCUzp29civDTvCg3M1j0XO",
"email_address": "john@onolan.org",
"profile_picture": "logo.png",
"cover_picture": "",
"bio": "Interactive designer, public speaker, startup advisor and writer. Living in Austria, attempting world domination via keyboard.",
"url": "john.onolan.org",
"bio": "Interactive designer, public speaker, startup advisor and writer. Living in Austria, attempting world domination via keyboard.",
"url": "john.onolan.org",
"created_by": 1,
"updated_by": 1
}

View File

@ -30,11 +30,17 @@
// Clone the _user so we don't expose the hashed password unnecessarily
userData = _.extend({}, _user);
return nodefn.call(bcrypt.hash, _user.password, null, null).then(function (hash) {
userData.password = hash;
return BaseProvider.prototype.add.call(self, userData);
return self.model.forge({email_address: userData.email_address}).fetch().then(function (user) {
if (!!user.attributes.email_address) {
return when.reject(new Error('A user with that email address already exists.'));
}
return nodefn.call(bcrypt.hash, _user.password, null, null).then(function (hash) {
userData.password = hash;
return BaseProvider.prototype.add.call(self, userData);
});
});
};
/**
@ -47,12 +53,15 @@
return this.model.forge({
email_address: _userdata.email
}).fetch().then(function (user) {
return nodefn.call(bcrypt.compare, _userdata.pw, user.get('password')).then(function (matched) {
if (!matched) {
return when.reject(new Error('Password does not match'));
}
return user;
});
if (!!user.attributes.email_address) {
return nodefn.call(bcrypt.compare, _userdata.pw, user.get('password')).then(function (matched) {
if (!matched) {
return when.reject(new Error('Passwords do not match'));
}
return user;
});
}
return when.reject(new Error('We do not have a record for such user.'));
});
};