Pull in changes from private branch, including many bug fixes and -

drumrole - functioning facebook auth!!
This commit is contained in:
Tyler Renelle
2012-09-15 15:06:51 -04:00
parent 10c5fecb75
commit bde52a01a9
11 changed files with 141 additions and 165 deletions

View File

@@ -1,80 +1,81 @@
// Generated by CoffeeScript 1.3.3
var conf, derby, model, sess;
var conf, content, derby, req, schema;
conf = require("./conf");
derby = require('derby');
model = void 0;
schema = require('../app/schema');
sess = void 0;
content = require('../app/content');
module.exports.setupPurlAuth = function(req) {
var acceptableUid, uidParam;
req = void 0;
module.exports.setRequest = function(r) {
return req = r;
};
module.exports.newUserAndPurl = function() {
var acceptableUid, guid, model, newUser, sess, task, uidParam, _i, _len, _ref;
model = req.getModel();
sess = req.session;
sess.userId || (sess.userId = derby.uuid());
sess.auth || (sess.auth = {
userId: sess.userId
});
sess = model.session;
uidParam = req.url.split('/')[1];
if (!sess.userId) {
sess.userId = derby.uuid();
newUser = require('node.extend')(true, {}, schema.userSchema);
_ref = content.defaultTasks;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
task = _ref[_i];
guid = task.id = require('derby/node_modules/racer').uuid();
newUser.tasks[guid] = task;
switch (task.type) {
case 'habit':
newUser.habitIds.push(guid);
break;
case 'daily':
newUser.dailyIds.push(guid);
break;
case 'todo':
newUser.todoIds.push(guid);
break;
case 'reward':
newUser.rewardIds.push(guid);
}
}
model.set("users." + sess.userId, newUser);
}
acceptableUid = require('guid').isGuid(uidParam) || (uidParam === '3' || uidParam === '9');
if (acceptableUid && sess.userId !== uidParam) {
sess.userId = uidParam;
return sess.userId = uidParam;
}
return model.set('_userId', sess.userId);
};
module.exports.setupEveryauth = function(everyauth) {
everyauth.debug = true;
everyauth.everymodule.findUserById(function(id, callback) {
return model.fetch("users." + id, function(err, user) {
var content, guid, newUser, schema, task, _i, _len, _ref;
if (user && user.get('id')) {
return callback(null, user.get());
} else {
schema = require('../app/schema');
content = require('../app/content');
newUser = require('node.extend')(true, {}, schema.userSchema);
_ref = content.defaultTasks;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
task = _ref[_i];
guid = task.id = require('derby/node_modules/racer').uuid();
newUser.tasks[guid] = task;
switch (task.type) {
case 'habit':
newUser.habitIds.push(guid);
break;
case 'daily':
newUser.dailyIds.push(guid);
break;
case 'todo':
newUser.todoIds.push(guid);
break;
case 'reward':
newUser.rewardIds.push(guid);
}
}
model.set("users." + id, newUser);
return callback(null, newUser);
}
});
return callback(null, null);
});
return everyauth.facebook.appId(process.env.FACEBOOK_KEY).appSecret(process.env.FACEBOOK_SECRET).findOrCreateUser(function(session, accessToken, accessTokenExtra, fbUserMetadata) {
var q;
var model, q;
session.habitRpgAuth || (session.habitRpgAuth = {});
session.habitRpgAuth.facebook = fbUserMetadata.id;
model = req.getModel();
q = model.query('users').withEveryauth('facebook', fbUserMetadata.id);
model.fetch(q, function(err, user) {
var id;
id = user && user.get() && user.get()[0].id;
console.log({
err: err,
user: user
id: id,
fbUserMetadata: fbUserMetadata
});
if (user.get('id')) {
return sess.userId = user.get('id');
if (id && id !== session.userId) {
return session.userId = id;
} else {
model.setNull("users." + sess.userId + ".auth", {
model.setNull("users." + session.userId + ".auth", {
'facebook': {}
});
return model.set("users." + sess.userId + ".auth.facebook", fbUserMetadata);
return model.set("users." + session.userId + ".auth.facebook", fbUserMetadata);
}
});
return fbUserMetadata;

View File

@@ -50,6 +50,8 @@ auth.setupQueries(store);
auth.setupEveryauth(everyauth);
auth.setupAccessControl(store);
ONE_YEAR = 1000 * 60 * 60 * 24 * 365;
root = path.dirname(path.dirname(__dirname));
@@ -59,11 +61,9 @@ publicPath = path.join(root, 'public');
habitrpgMiddleware = function(req, res, next) {
var model;
model = req.getModel();
auth.setupPurlAuth(req);
auth.setupAccessControl(store);
model.set('_stripePubKey', process.env.STRIPE_PUB_KEY);
model.set('_nodeEnv', process.env.NODE_ENV);
model.set('_mobileDevice', /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(req.header('User-Agent')));
auth.setRequest(req);
auth.newUserAndPurl();
return next();
};
@@ -79,4 +79,4 @@ expressApp.use(express.favicon()).use(gzippo.staticGzip(publicPath, {
})
})).use(store.modelMiddleware()).use(habitrpgMiddleware).use(everyauth.middleware()).use(app.router()).use(expressApp.router).use(serverError(root));
require('./serverRoutes')(expressApp);
require('./serverRoutes')(expressApp, root, derby);

View File

@@ -3,7 +3,7 @@ var scoring;
scoring = require('../app/scoring');
module.exports = function(expressApp) {
module.exports = function(expressApp, root, derby) {
expressApp.get('/:uid/up/:score?', function(req, res) {
var model, score;
score = parseInt(req.params.score) || 1;
@@ -50,10 +50,10 @@ module.exports = function(expressApp) {
staticPages = derby.createStatic(root);
return staticPages.render('terms', res);
});
expressApp.all('*', function(req) {
throw "404: " + req.url;
});
return expressApp.post('/', function(req) {
expressApp.post('/', function(req) {
return require('../app/reroll').stripeResponse(req);
});
return expressApp.all('*', function(req) {
throw "404: " + req.url;
});
};