Created findOrCreateOauth user function

This commit is contained in:
Sahat Yalkabov
2013-11-13 19:37:53 -05:00
parent 7b86a34a6a
commit b6e55c1aae

View File

@ -43,60 +43,58 @@ var users = [
]; ];
module.exports = { module.exports = {
addUser: function(username, password, role, callback) { addUser: function(username, password, role, callback) {
if (this.findByUsername(username) !== undefined) { if (this.findByUsername(username)) {
return callback("UserAlreadyExists"); return callback("UserAlreadyExists");
} }
// Clean up when 500 users reached
if(users.length > 500) {
users = users.slice(0, 2);
}
var user = new User({ var user = new User({
id: _.max(users, function(user) { return user.id; }).id + 1,
username: username, username: username,
password: password, password: password,
role: role role: role
}); });
users.push(user);
user.save(function(err) {
callback(null, user); callback(null, user);
});
}, },
findOrCreateOauthUser: function(provider, providerId) { findOrCreateOauthUser: function(provider, providerId) {
var user = module.exports.findByProviderId(provider, providerId); User.findOne({ $where: provider + '===' + providerId }, function(err, user) {
if(!user) { if (user) {
return user;
} else {
user = { user = {
id: _.max(users, function(user) { return user.id; }).id + 1, username: provider + '_user',
username: provider + '_user', // Should keep Oauth users anonymous on demo site
role: userRoles.user, role: userRoles.user,
provider: provider provider: provider
}; };
user[provider] = providerId; user[provider] = providerId;
users.push(user);
}
user.save(function(err) {
return user; return user;
}, });
findAll: function() {
return _.map(users, function(user) { return _.clone(user); });
},
findById: function(id) {
return _.clone(_.find(users, function(user) { return user.id === id }));
},
findByUsername: function(username) {
User.findOne({ username: username }, function(err, user) {
if (user) {
return user;
} }
}); });
}, },
findByProviderId: function(provider, id) { findAll: function() {
return _.find(users, function(user) { return user[provider] === id; }); User.find(function(err, users) {
return users;
});
},
findById: function(id) {
User.findById(id, function(err, user) {
if (user) return user;
});
},
findByUsername: function(username) {
User.findOne({ username: username }, function(err, user) {
if (user) return user;
});
}, },
validate: function(user) { validate: function(user) {