mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-19 15:48:04 +01:00
Pull in changes from private branch, including many bug fixes and -
drumrole - functioning facebook auth!!
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
});
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user