mirror of
https://github.com/sudoxnym/habitica.git
synced 2026-07-15 00:12:17 +00:00
All the setup necessary to get accessControl working (theoretically),
still doesn't work
This commit is contained in:
parent
b0a95b69d2
commit
2bb4af286e
2 changed files with 57 additions and 26 deletions
|
|
@ -1,5 +1,5 @@
|
|||
// Generated by CoffeeScript 1.3.3
|
||||
var Guid, content, derby, get, ready, view, _ref;
|
||||
var Guid, content, derby, get, getHabits, ready, view, _ref;
|
||||
|
||||
derby = require('derby');
|
||||
|
||||
|
|
@ -76,18 +76,18 @@ view.fn("silver", function(num) {
|
|||
}
|
||||
});
|
||||
|
||||
get('/:userId?', function(page, model, _arg) {
|
||||
var userId;
|
||||
userId = _arg.userId;
|
||||
return model.subscribe("users", function(err, users) {
|
||||
var debuggingUsers, guid, newUser, task, user, _i, _len, _ref1;
|
||||
debuggingUsers = parseInt(userId) < 40;
|
||||
if ((userId != null) && (users.get(userId) || debuggingUsers)) {
|
||||
model.set('_userId', userId);
|
||||
model.session.userId = userId;
|
||||
get('/:uidParam?', function(page, model, _arg) {
|
||||
var uidParam;
|
||||
uidParam = _arg.uidParam;
|
||||
return model.fetch('users', function(err, users) {
|
||||
var guid, newUser, task, user, userId, _i, _len, _ref1;
|
||||
if ((uidParam != null) && users.get(uidParam)) {
|
||||
model.set('_userId', uidParam);
|
||||
model.session.userId = uidParam;
|
||||
}
|
||||
userId = model.get('_userId');
|
||||
if (!model.get("users." + userId)) {
|
||||
user = users.get(userId);
|
||||
if (user == null) {
|
||||
newUser = {
|
||||
stats: {
|
||||
money: 0,
|
||||
|
|
@ -128,7 +128,23 @@ get('/:userId?', function(page, model, _arg) {
|
|||
}
|
||||
users.set(userId, newUser);
|
||||
}
|
||||
user = model.at("users." + userId);
|
||||
model.store.accessControl = true;
|
||||
model.store.readPathAccess('users.*', function(id, accept) {
|
||||
return accept(id === userId);
|
||||
});
|
||||
model.store.writeAccess('*', 'users.*', function(id, accept) {
|
||||
console.log("model.writeAccess called with id:" + id);
|
||||
return accept(id === userId);
|
||||
});
|
||||
return getHabits(page, model, userId);
|
||||
});
|
||||
});
|
||||
|
||||
getHabits = function(page, model, userId) {
|
||||
return model.subscribe("users." + userId, function(err, user) {
|
||||
console.log(userId, 'userId');
|
||||
console.log(err, 'err');
|
||||
console.log(user.get(), '[debug] user');
|
||||
model.ref('_user', user);
|
||||
model.set('_items', {
|
||||
armor: content.items.armor[parseInt(user.get('items.armor')) + 1],
|
||||
|
|
@ -145,7 +161,7 @@ get('/:userId?', function(page, model, _arg) {
|
|||
model.refList("_rewardList", "_user.tasks", "_user.rewardIds");
|
||||
return page.render();
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
ready(function(model) {
|
||||
var endOfDayTally, expModifier, hpModifier, poormanscron, setupSortable, step, tour, type, updateStats, _i, _j, _len, _len1, _ref1, _ref2;
|
||||
|
|
|
|||
|
|
@ -44,23 +44,22 @@ view.fn "silver", (num) ->
|
|||
|
||||
## ROUTES ##
|
||||
|
||||
get '/:userId?', (page, model, {userId}) ->
|
||||
|
||||
model.subscribe "users", (err, users) ->
|
||||
get '/:uidParam?', (page, model, {uidParam}) ->
|
||||
|
||||
model.fetch 'users', (err, users) ->
|
||||
|
||||
# Previously saved session (eg, http://localhost/{guid}) (temporary solution until authentication built)
|
||||
debuggingUsers = (parseInt(userId) < 40) #these are users created before guid was in use, need to convert them to guid and get rid of this
|
||||
if userId? and (users.get(userId) or debuggingUsers)
|
||||
model.set '_userId', userId # set for this request
|
||||
model.session.userId = userId # and for next requests
|
||||
|
||||
if uidParam? and users.get(uidParam)
|
||||
model.set '_userId', uidParam # set for this request
|
||||
model.session.userId = uidParam # and for next requests
|
||||
|
||||
# Current browser session
|
||||
# The session middleware will assign a _userId automatically
|
||||
# Render page if a userId is already stored in session data
|
||||
userId = model.get '_userId'
|
||||
|
||||
unless model.get "users.#{userId}"
|
||||
# Otherwise, select a new userId and initialize user
|
||||
user = users.get(userId)
|
||||
|
||||
# Else, select a new userId and initialize user
|
||||
unless user?
|
||||
newUser = {
|
||||
stats: { money: 0, exp: 0, lvl: 1, hp: 50 }
|
||||
items: { itemsEnabled: false, armor: 0, weapon: 0 }
|
||||
|
|
@ -76,8 +75,24 @@ get '/:userId?', (page, model, {userId}) ->
|
|||
when 'todo' then newUser.todoIds.push guid
|
||||
when 'reward' then newUser.rewardIds.push guid
|
||||
users.set userId, newUser
|
||||
|
||||
#TODO these *Access functions aren't being called, why?
|
||||
model.store.accessControl = true
|
||||
model.store.readPathAccess 'users.*', (id, accept) ->
|
||||
accept(id == userId)
|
||||
model.store.writeAccess '*', 'users.*', (id, accept) ->
|
||||
console.log "model.writeAccess called with id:#{id}"
|
||||
accept(id == userId)
|
||||
|
||||
getHabits(page, model, userId)
|
||||
|
||||
getHabits = (page, model, userId) ->
|
||||
|
||||
user = model.at("users.#{userId}")
|
||||
model.subscribe "users.#{userId}", (err, user) ->
|
||||
console.log userId, 'userId'
|
||||
console.log err, 'err'
|
||||
console.log user.get(), '[debug] user'
|
||||
|
||||
model.ref '_user', user
|
||||
|
||||
# Store
|
||||
|
|
|
|||
Loading…
Reference in a new issue