mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-19 15:48:04 +01:00
Move purl authentication to server/index.js and don't redirect. keep
them on that url
This commit is contained in:
@@ -20,13 +20,8 @@ helpers = require('./helpers');
|
|||||||
helpers.viewHelpers(view);
|
helpers.viewHelpers(view);
|
||||||
|
|
||||||
get('/:uidParam?', function(page, model, _arg) {
|
get('/:uidParam?', function(page, model, _arg) {
|
||||||
var acceptableUid, uidParam, userId;
|
var uidParam, userId;
|
||||||
uidParam = _arg.uidParam;
|
uidParam = _arg.uidParam;
|
||||||
acceptableUid = require('guid').isGuid(uidParam) || (uidParam === '3' || uidParam === '9');
|
|
||||||
if (acceptableUid) {
|
|
||||||
model.session.userId = uidParam;
|
|
||||||
return page.redirect('/');
|
|
||||||
}
|
|
||||||
userId = model.get('_userId');
|
userId = model.get('_userId');
|
||||||
return model.subscribe("users." + userId, function(err, user) {
|
return model.subscribe("users." + userId, function(err, user) {
|
||||||
var guid, newUser, task, _i, _len, _ref1;
|
var guid, newUser, task, _i, _len, _ref1;
|
||||||
|
|||||||
@@ -47,10 +47,15 @@ root = path.dirname(path.dirname(__dirname));
|
|||||||
publicPath = path.join(root, 'public');
|
publicPath = path.join(root, 'public');
|
||||||
|
|
||||||
habitrpgMiddleware = function(req, res, next) {
|
habitrpgMiddleware = function(req, res, next) {
|
||||||
var model, _base;
|
var acceptableUid, model, uidParam, _base;
|
||||||
model = req.getModel();
|
model = req.getModel();
|
||||||
(_base = req.session).userId || (_base.userId = derby.uuid());
|
(_base = req.session).userId || (_base.userId = derby.uuid());
|
||||||
model.setNull('_userId', req.session.userId);
|
uidParam = req.url.split('/')[1];
|
||||||
|
acceptableUid = require('guid').isGuid(uidParam) || (uidParam === '3' || uidParam === '9');
|
||||||
|
if (acceptableUid && req.session.userId !== uidParam) {
|
||||||
|
req.session.userId = uidParam;
|
||||||
|
}
|
||||||
|
model.set('_userId', req.session.userId);
|
||||||
model.set('_mobileDevice', /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(req.header('User-Agent')));
|
model.set('_mobileDevice', /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(req.header('User-Agent')));
|
||||||
model.set('_nodeEnv', process.env.NODE_ENV);
|
model.set('_nodeEnv', process.env.NODE_ENV);
|
||||||
require('./setupStore').accessControl(store);
|
require('./setupStore').accessControl(store);
|
||||||
|
|||||||
@@ -16,15 +16,6 @@ helpers.viewHelpers(view)
|
|||||||
|
|
||||||
get '/:uidParam?', (page, model, {uidParam}) ->
|
get '/:uidParam?', (page, model, {uidParam}) ->
|
||||||
|
|
||||||
# PURL pseudo-auth: Previously saved session (eg, http://localhost/{guid}) (temporary solution until authentication built)
|
|
||||||
acceptableUid = require('guid').isGuid(uidParam) or (uidParam in ['3','9'])
|
|
||||||
if acceptableUid# && model.session.userId!=uidParam
|
|
||||||
# model.fetch "users.#{uidParam}", (err, user) -> #test whether user exists
|
|
||||||
# if user.get('id')
|
|
||||||
model.session.userId = uidParam
|
|
||||||
return page.redirect('/')
|
|
||||||
|
|
||||||
# The session middleware will assign a _userId automatically
|
|
||||||
userId = model.get '_userId'
|
userId = model.get '_userId'
|
||||||
|
|
||||||
model.subscribe "users.#{userId}", (err, user) ->
|
model.subscribe "users.#{userId}", (err, user) ->
|
||||||
|
|||||||
@@ -32,16 +32,24 @@ publicPath = path.join root, 'public'
|
|||||||
habitrpgMiddleware = (req, res, next) ->
|
habitrpgMiddleware = (req, res, next) ->
|
||||||
model = req.getModel()
|
model = req.getModel()
|
||||||
|
|
||||||
# chat userId is no longer auto-created by session middleware
|
## PURL authentication
|
||||||
req.session.userId ||= derby.uuid()
|
# Setup userId for new users
|
||||||
model.setNull('_userId', req.session.userId)
|
req.session.userId ||= derby.uuid()
|
||||||
|
# Previously saved session (eg, http://localhost/{guid}) (temporary solution until authentication built)
|
||||||
|
uidParam = req.url.split('/')[1]
|
||||||
|
acceptableUid = require('guid').isGuid(uidParam) or (uidParam in ['3','9'])
|
||||||
|
if acceptableUid && req.session.userId!=uidParam
|
||||||
|
# TODO test whether user exists: ```model.fetch("users.#{uidParam}", function(err,user){if(user.get(..){})}})```, but doesn't seem to work
|
||||||
|
req.session.userId = uidParam
|
||||||
|
model.set '_userId', req.session.userId
|
||||||
|
|
||||||
# set _mobileDevice to true or false so view can exclude portions from mobile device
|
## Set _mobileDevice to true or false so view can exclude portions from mobile device
|
||||||
model.set '_mobileDevice', /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(req.header 'User-Agent')
|
model.set '_mobileDevice', /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(req.header 'User-Agent')
|
||||||
|
|
||||||
# same for production/development
|
## Same for production/development
|
||||||
model.set '_nodeEnv', process.env.NODE_ENV
|
model.set '_nodeEnv', process.env.NODE_ENV
|
||||||
|
|
||||||
|
## Setup access control
|
||||||
require('./setupStore').accessControl(store)
|
require('./setupStore').accessControl(store)
|
||||||
|
|
||||||
next()
|
next()
|
||||||
|
|||||||
Reference in New Issue
Block a user