Added schema and finduserbyid to the new Users model file

This commit is contained in:
Sahat Yalkabov
2013-11-13 18:58:03 -05:00
parent 14c406bc33
commit 7b86a34a6a
2 changed files with 212 additions and 182 deletions

View File

@ -1,25 +1,38 @@
var express = require('express'), var express = require('express'),
mongoose = require('mongoose'), http = require('http'),
path = require('path'),
fs = require('fs'), fs = require('fs'),
mongoose = require('mongoose'),
passport = require('passport'),
config = require('./conf'); config = require('./conf');
var User = require('./server/models/User');
var db = mongoose.connect(config.db); var db = mongoose.connect(config.db);
var app = express(); var app = express();
/**
* Express Settings
*/
app.set('port', process.env.PORT || 3000); app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/client/views');
app.set('view engine', 'jade');
app.use(express.favicon()); app.use(express.favicon());
app.use(express.logger('dev')); app.use(express.logger('dev'));
app.use(express.json()); app.use(express.cookieParser());
app.use(express.urlencoded()); app.use(express.bodyParser());
app.use(express.methodOverride()); app.use(express.methodOverride());
app.use(express.cookieSession({ secret: process.env.COOKIE_SECRET || 'secret' }));
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router); app.use(app.router);
app.use(express.static(config.root + '/public')); app.use(express.static(config.root + '/public'));
passport.use(User.localStrategy);
passport.use(User.twitterStrategy());
passport.use(User.facebookStrategy());
passport.use(User.googleStrategy());
passport.use(User.linkedInStrategy());
passport.serializeUser(User.serializeUser);
passport.deserializeUser(User.deserializeUser);
/** /**
* API Controllers * API Controllers
@ -28,13 +41,6 @@ var articles = require('./controllers/articles');
var users = require('./controllers/users'); var users = require('./controllers/users');
/**
* API Models
*/
var Article = require('./models/article');
var User = require('./models/user');
/** /**
* API Routes * API Routes
*/ */

View File

@ -1,13 +1,31 @@
var User var _ = require('underscore'),
, _ = require('underscore') mongoose = require('mongoose'),
, passport = require('passport') crypto = require('crypto'),
, LocalStrategy = require('passport-local').Strategy passport = require('passport'),
, TwitterStrategy = require('passport-twitter').Strategy LocalStrategy = require('passport-local').Strategy,
, FacebookStrategy = require('passport-facebook').Strategy TwitterStrategy = require('passport-twitter').Strategy,
, GoogleStrategy = require('passport-google').Strategy FacebookStrategy = require('passport-facebook').Strategy,
, LinkedInStrategy = require('passport-linkedin').Strategy GoogleStrategy = require('passport-google').Strategy,
, check = require('validator').check LinkedInStrategy = require('passport-linkedin').Strategy,
, userRoles = require('../../client/js/routingConfig').userRoles; check = require('validator').check,
userRoles = require('../../client/js/routingConfig').userRoles;
var UserSchema = new mongoose.Schema({
name: String,
email: String,
username: {
type: String,
unique: true
},
provider: String,
hashed_password: String,
salt: String,
facebook: {},
twitter: {},
google: {}
});
var User = mongoose.model('User', UserSchema);
var users = [ var users = [
{ {
@ -26,19 +44,21 @@ var users = [
module.exports = { module.exports = {
addUser: function(username, password, role, callback) { addUser: function(username, password, role, callback) {
if(this.findByUsername(username) !== undefined) return callback("UserAlreadyExists"); if (this.findByUsername(username) !== undefined) {
return callback("UserAlreadyExists");
}
// Clean up when 500 users reached // Clean up when 500 users reached
if(users.length > 500) { if(users.length > 500) {
users = users.slice(0, 2); users = users.slice(0, 2);
} }
var user = { var user = new User({
id: _.max(users, function(user) { return user.id; }).id + 1, 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); users.push(user);
callback(null, user); callback(null, user);
}, },
@ -68,7 +88,11 @@ module.exports = {
}, },
findByUsername: function(username) { findByUsername: function(username) {
return _.clone(_.find(users, function(user) { return user.username === username; })); User.findOne({ username: username }, function(err, user) {
if (user) {
return user;
}
});
}, },
findByProviderId: function(provider, id) { findByProviderId: function(provider, id) {