我能夠覆蓋寄存器和登錄下列方式操作:
/* -------------------------------- Signup ---------------------------------*/
/**
* Adds a new user and logs in for the first time
* Signup normally works out of box but in order to do custom validation and
* add fields to user we had to add our own
*/
signup: function(req, res){
// Perform validation for data that will be used before we store
var invalid = {};
if(!UserService.validateUsername(req.param('username'), invalid) ||
!UserService.validatePassword(req.param('password'), invalid)) {
return res.badRequest(invalid);
}
// Get the autentiacation parameters out
var params = req.allParams();
var auth = {
email: params.email,
password: params.password
};
// Remove password from data
delete(params.password);
// Create user and authentication
User.create(params).exec(function(err, user){
if(err){
return res.negotiate(err);
}
waterlock.engine.attachAuthToUser(auth, user, function(err, ua){
if(err){
res.json(err);
}else{
waterlock.cycle.loginSuccess(req, res, ua);
}
});
});
},
/* -------------------------------- Login ---------------------------------*/
/**
* Logs in a user
*/
login: function(req, res) {
var params = req.allParams();
var auth = {
email: params.email,
password: params.password
};
waterlock.engine.findAuth({ email: auth.email }, function(err, user){
if(err){
return res.json(err);
}
if (user) {
if(bcrypt.compareSync(auth.password, user.auth.password)){
waterlock.cycle.loginSuccess(req, res, user);
}else{
waterlock.cycle.loginFailure(req, res, user, {error: 'Invalid email or password'});
}
} else {
//TODO redirect to register
waterlock.cycle.loginFailure(req, res, null, {error: 'user not found'});
}
});
},