Vulcan/common/permissions.js
2012-11-21 14:31:58 +09:00

70 lines
No EOL
1.9 KiB
JavaScript

// Permissions
// user: Defaults to Meteor.user()
// returnError: If there's an error, should we return what the problem is?
//
// return true if all is well, false || an error string if not
canView = function(user, returnError){
var user=(typeof user === 'undefined') ? Meteor.user() : user;
// console.log('canView', 'user:', user, 'returnError:', returnError, getSetting('requireViewInvite'));
if(Meteor.isClient && !Session.get('settingsLoaded'))
return false;
if(getSetting('requireViewInvite') === true){
if(!user){
return returnError ? "no_account" : false;
}else if(isAdmin(user) || user.isInvited){
return true;
}else{
return returnError ? "no_invite" : false;
}
}else{
return true;
}
}
canPost = function(user, returnError){
var user=(typeof user === 'undefined') ? Meteor.user() : user;
// console.log('canPost', user, action, getSetting('requirePostInvite'));
if(Meteor.isClient && !Session.get('settingsLoaded'))
return false;
if(!user){
return returnError ? "no_account" : false;
} else if (isAdmin(user)) {
return true;
} else if (getSetting('requirePostInvite')) {
if (user.isInvited) {
return true;
} else {
return returnError ? "no_invite" : false;
}
} else {
return true;
}
}
canComment = function(user, returnError){
return canPost(user, returnError);
}
canUpvote = function(user, collection, returnError){
return canPost(user, returnError);
}
canDownvote = function(user, collection, returnError){
return canPost(user, returnError);
}
canEdit = function(user, item, returnError){
var user=(typeof user === 'undefined') ? Meteor.user() : user;
if (!user || !item){
return returnError ? "no_rights" : false;
} else if (isAdmin(user)) {
return true;
} else if (user._id!==item.userId) {
return returnError ? "no_rights" : false;
}else {
return true;
}
}