All the setup necessary to get accessControl working (theoretically),

still doesn't work
This commit is contained in:
Tyler Renelle 2012-07-19 14:48:49 -04:00
parent b0a95b69d2
commit 2bb4af286e
2 changed files with 57 additions and 26 deletions

View file

@ -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;

View file

@ -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