Skip to content

Commit 9f7aeb8

Browse files
author
Joe Alves
committed
The big SQL overhaul. Expect bugs!
1 parent bbd9056 commit 9f7aeb8

File tree

19 files changed

+215
-248
lines changed

19 files changed

+215
-248
lines changed

generated/package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
"chai": "^2.1.0",
2525
"chalk": "^1.0.0",
2626
"connect-mongo": "^0.7.0",
27+
"connect-session-sequelize": "^3.0.0",
2728
"cookie-parser": "^1.3.4",
2829
"express": "^4.12.0",
2930
"express-session": "^1.10.3",
@@ -58,7 +59,10 @@
5859
"passport-google-oauth": "^0.1.5",
5960
"passport-local": "^1.0.0",
6061
"passport-twitter": "^1.0.2",
62+
"pg": "^4.5.5",
63+
"pg-hstore": "^2.3.2",
6164
"run-sequence": "^1.0.2",
65+
"sequelize": "^3.23.3",
6266
"serve-favicon": "^2.2.0",
6367
"sinon": "^1.13.0",
6468
"socket.io": "^1.3.4",

generated/seed.js

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,10 @@ name in the environment files.
1717
1818
*/
1919

20-
var mongoose = require('mongoose');
21-
var Promise = require('bluebird');
2220
var chalk = require('chalk');
23-
var connectToDb = require('./server/db');
24-
var User = mongoose.model('User');
25-
26-
var wipeCollections = function () {
27-
var removeUsers = User.remove({});
28-
return Promise.all([
29-
removeUsers
30-
]);
31-
};
21+
var db = require('./server/db');
22+
var User = db.model('user');
23+
var Promise = require('sequelize').Promise;
3224

3325
var seedUsers = function () {
3426

@@ -43,14 +35,15 @@ var seedUsers = function () {
4335
}
4436
];
4537

46-
return User.create(users);
38+
var creatingUsers = users.map(function (userObj) {
39+
return User.create(userObj);
40+
});
41+
42+
return Promise.all(creatingUsers);
4743

4844
};
4945

50-
connectToDb
51-
.then(function () {
52-
return wipeCollections();
53-
})
46+
db.sync({ force: true })
5447
.then(function () {
5548
return seedUsers();
5649
})

generated/server/app/configure/authentication/facebook.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
'use strict';
22
var passport = require('passport');
33
var FacebookStrategy = require('passport-facebook').Strategy;
4-
var mongoose = require('mongoose');
5-
var UserModel = mongoose.model('User');
64

7-
module.exports = function (app) {
5+
module.exports = function (app, db) {
6+
7+
var User = db.define('user');
88

99
var facebookConfig = app.getValue('env').FACEBOOK;
1010

@@ -16,19 +16,19 @@ module.exports = function (app) {
1616

1717
var verifyCallback = function (accessToken, refreshToken, profile, done) {
1818

19-
UserModel.findOne({ 'facebook.id': profile.id }).exec()
19+
User.findOne({
20+
where: {
21+
facebook_id: profile.id
22+
}
23+
})
2024
.then(function (user) {
21-
2225
if (user) {
2326
return user;
2427
} else {
25-
return UserModel.create({
26-
facebook: {
27-
id: profile.id
28-
}
28+
return User.create({
29+
facebook_id: profile.id
2930
});
3031
}
31-
3232
})
3333
.then(function (userToLogin) {
3434
done(null, userToLogin);
@@ -45,7 +45,7 @@ module.exports = function (app) {
4545
app.get('/auth/facebook', passport.authenticate('facebook'));
4646

4747
app.get('/auth/facebook/callback',
48-
passport.authenticate('facebook', { failureRedirect: '/login' }),
48+
passport.authenticate('facebook', {failureRedirect: '/login'}),
4949
function (req, res) {
5050
res.redirect('/');
5151
});

generated/server/app/configure/authentication/google.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
var passport = require('passport');
44
var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
5-
var mongoose = require('mongoose');
6-
var UserModel = mongoose.model('User');
75

8-
module.exports = function (app) {
6+
module.exports = function (app, db) {
7+
8+
var User = db.model('user');
99

1010
var googleConfig = app.getValue('env').GOOGLE;
1111

@@ -17,19 +17,19 @@ module.exports = function (app) {
1717

1818
var verifyCallback = function (accessToken, refreshToken, profile, done) {
1919

20-
UserModel.findOne({ 'google.id': profile.id }).exec()
20+
User.findOne({
21+
where: {
22+
google_id: profile.id
23+
}
24+
})
2125
.then(function (user) {
22-
2326
if (user) {
2427
return user;
2528
} else {
26-
return UserModel.create({
27-
google: {
28-
id: profile.id
29-
}
29+
return User.create({
30+
google_id: profile.id
3031
});
3132
}
32-
3333
})
3434
.then(function (userToLogin) {
3535
done(null, userToLogin);
@@ -51,7 +51,7 @@ module.exports = function (app) {
5151
}));
5252

5353
app.get('/auth/google/callback',
54-
passport.authenticate('google', { failureRedirect: '/login' }),
54+
passport.authenticate('google', {failureRedirect: '/login'}),
5555
function (req, res) {
5656
res.redirect('/');
5757
});

generated/server/app/configure/authentication/index.js

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
'use strict';
2+
var path = require('path');
23
var session = require('express-session');
3-
var MongoStore = require('connect-mongo')(session);
44
var passport = require('passport');
5-
var path = require('path');
6-
var mongoose = require('mongoose');
7-
var UserModel = mongoose.model('User');
5+
var SequelizeStore = require('connect-session-sequelize')(session.Store);
86

97
var ENABLED_AUTH_STRATEGIES = [
108
'local',
@@ -13,14 +11,22 @@ var ENABLED_AUTH_STRATEGIES = [
1311
//'google'
1412
];
1513

16-
module.exports = function (app) {
14+
module.exports = function (app, db) {
15+
16+
var dbStore = new SequelizeStore({
17+
db: db
18+
});
19+
20+
var User = db.model('user');
21+
22+
dbStore.sync();
1723

1824
// First, our session middleware will set/read sessions from the request.
1925
// Our sessions will get stored in Mongo using the same connection from
2026
// mongoose. Check out the sessions collection in your MongoCLI.
2127
app.use(session({
2228
secret: app.getValue('env').SESSION_SECRET,
23-
store: new MongoStore({mongooseConnection: mongoose.connection}),
29+
store: dbStore,
2430
resave: false,
2531
saveUninitialized: false
2632
}));
@@ -38,7 +44,11 @@ module.exports = function (app) {
3844
// When we receive a cookie from the browser, we use that id to set our req.user
3945
// to a user found in the database.
4046
passport.deserializeUser(function (id, done) {
41-
UserModel.findById(id, done);
47+
User.findById(id)
48+
.then(function (user) {
49+
done(null, user);
50+
})
51+
.catch(done);
4252
});
4353

4454
// We provide a simple GET /session in order to get session information directly.
@@ -60,7 +70,7 @@ module.exports = function (app) {
6070

6171
// Each strategy enabled gets registered.
6272
ENABLED_AUTH_STRATEGIES.forEach(function (strategyName) {
63-
require(path.join(__dirname, strategyName))(app);
73+
require(path.join(__dirname, strategyName))(app, db);
6474
});
6575

6676
};

generated/server/app/configure/authentication/local.js

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
'use strict';
22
var passport = require('passport');
33
var LocalStrategy = require('passport-local').Strategy;
4-
var mongoose = require('mongoose');
5-
var User = mongoose.model('User');
64

7-
module.exports = function (app) {
5+
module.exports = function (app, db) {
6+
7+
var User = db.model('user');
88

99
// When passport.authenticate('local') is used, this function will receive
1010
// the email and password to run the actual authentication logic.
1111
var strategyFn = function (email, password, done) {
12-
User.findOne({ email: email })
12+
User.findOne({
13+
where: {
14+
email: email
15+
}
16+
})
1317
.then(function (user) {
1418
// user.correctPassword is a method from the User schema.
1519
if (!user || !user.correctPassword(password)) {
@@ -22,7 +26,7 @@ module.exports = function (app) {
2226
.catch(done);
2327
};
2428

25-
passport.use(new LocalStrategy({ usernameField: 'email', passwordField: 'password' }, strategyFn));
29+
passport.use(new LocalStrategy({usernameField: 'email', passwordField: 'password'}, strategyFn));
2630

2731
// A POST /login route is created to handle login.
2832
app.post('/login', function (req, res, next) {

generated/server/app/configure/authentication/twitter.js

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
var passport = require('passport');
44
var TwitterStrategy = require('passport-twitter').Strategy;
5-
var mongoose = require('mongoose');
6-
var UserModel = mongoose.model('User');
75

8-
module.exports = function (app) {
6+
module.exports = function (app, db) {
7+
8+
var User = db.model('user');
99

1010
var twitterConfig = app.getValue('env').TWITTER;
1111

@@ -16,32 +16,21 @@ module.exports = function (app) {
1616
};
1717

1818
var createNewUser = function (token, tokenSecret, profile) {
19-
return UserModel.create({
20-
twitter: {
21-
id: profile.id,
22-
username: profile.username,
23-
token: token,
24-
tokenSecret: tokenSecret
25-
}
19+
return User.create({
20+
twitter_id: profile.id
2621
});
2722
};
2823

29-
var updateUserCredentials = function (user, token, tokenSecret, profile) {
30-
31-
user.twitter.token = token;
32-
user.twitter.tokenSecret = tokenSecret;
33-
user.twitter.username = profile.username;
34-
35-
return user.save();
36-
37-
};
38-
3924
var verifyCallback = function (token, tokenSecret, profile, done) {
4025

41-
UserModel.findOne({'twitter.id': profile.id}).exec()
26+
UserModel.findOne({
27+
where: {
28+
twitter_id: profile.id
29+
}
30+
}).exec()
4231
.then(function (user) {
4332
if (user) { // If a user with this twitter id already exists.
44-
return updateUserCredentials(user, token, tokenSecret, profile);
33+
return user;
4534
} else { // If this twitter id has never been seen before and no user is attached.
4635
return createNewUser(token, tokenSecret, profile);
4736
}

generated/server/app/configure/index.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
'use strict';
2-
module.exports = function (app) {
2+
module.exports = function (app, db) {
33

44
// setValue and getValue are merely alias
55
// for app.set and app.get used in the less
@@ -18,6 +18,6 @@ module.exports = function (app) {
1818
// variable inside of server/app/configure/app-variables.js
1919
app.use(app.getValue('log'));
2020

21-
require('./authentication')(app);
21+
require('./authentication')(app, db);
2222

23-
};
23+
};

0 commit comments

Comments
 (0)