mirror of
https://github.com/vale981/Vulcan
synced 2025-03-06 10:01:40 -05:00
improving invite and permission system
This commit is contained in:
parent
7419ff2cb0
commit
ecb7d2b0f4
8 changed files with 45 additions and 11 deletions
|
@ -8,9 +8,15 @@
|
|||
{{/if}}
|
||||
{{#if currentUser.isAdmin}}
|
||||
<div class="control-group">
|
||||
<label class="control-label">Require Invite?</label>
|
||||
<label class="control-label">Require Invite to view?</label>
|
||||
<div class="controls">
|
||||
<input type="checkbox" name="requireInvite" id="requireInvite" {{#if requireInvite}}checked{{/if}} />
|
||||
<input type="checkbox" name="requireViewInvite" id="requireViewInvite" {{#if requireViewInvite}}checked{{/if}} />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">Require Invite to post?</label>
|
||||
<div class="controls">
|
||||
<input type="checkbox" name="requirePostInvite" id="requirePostInvite" {{#if requirePostInvite}}checked{{/if}} />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
|
|
|
@ -2,7 +2,8 @@ Template.settings.events = {
|
|||
'click input[type=submit]': function(e){
|
||||
e.preventDefault();
|
||||
if(!Meteor.user()) throw 'You must be logged in.';
|
||||
var requireInvite=!!$('#requireInvite').attr('checked');
|
||||
var requireViewInvite=!!$('#requireViewInvite').attr('checked');
|
||||
var requirePostInvite=!!$('#requirePostInvite').attr('checked');
|
||||
var title= $('#title').val();
|
||||
var theme = $('#theme').val();
|
||||
var footerCode=$("#footerCode").val();
|
||||
|
@ -24,7 +25,8 @@ Template.settings.events = {
|
|||
if(prevSetting){
|
||||
Settings.update(prevSetting._id,{
|
||||
$set: {
|
||||
requireInvite:requireInvite,
|
||||
requireViewInvite:requireViewInvite,
|
||||
requirePostInvite:requirePostInvite,
|
||||
title: title,
|
||||
theme: theme,
|
||||
footerCode: footerCode,
|
||||
|
@ -48,7 +50,8 @@ Template.settings.events = {
|
|||
});
|
||||
}else{
|
||||
var settingId = Settings.insert({
|
||||
requireInvite:requireInvite,
|
||||
requireViewInvite:requireViewInvite,
|
||||
requirePostInvite:requirePostInvite,
|
||||
title: title,
|
||||
theme: theme,
|
||||
footerCode: footerCode,
|
||||
|
|
5
client/views/errors/no_account.html
Normal file
5
client/views/errors/no_account.html
Normal file
|
@ -0,0 +1,5 @@
|
|||
<template name="no_account">
|
||||
<div class="grid-small grid-block dialog">
|
||||
<p>Sorry, this is a private site. Please sign up first.</p>
|
||||
</div>
|
||||
</template>
|
0
client/views/errors/no_account.js
Normal file
0
client/views/errors/no_account.js
Normal file
5
client/views/errors/no_invite.html
Normal file
5
client/views/errors/no_invite.html
Normal file
|
@ -0,0 +1,5 @@
|
|||
<template name="no_invite">
|
||||
<div class="grid-small grid-block dialog">
|
||||
<p>Sorry, you will need to be invited before you have access to the site.</p>
|
||||
</div>
|
||||
</template>
|
0
client/views/errors/no_invite.js
Normal file
0
client/views/errors/no_invite.js
Normal file
|
@ -14,7 +14,7 @@
|
|||
</td>
|
||||
<td><a href="#">{{comments_count}}</a></td>
|
||||
<td>{{karma}}</td>
|
||||
<td>{{#if isInvited}}<i class="icon-check"></i>{{else}}<a href="#" class="invite-link">Invite</a>{{/if}}</td>
|
||||
<td>{{#if isAdmin}}<i class="icon-check"></i>{{else}}<a href="#" class="admin-link">Make admin</a>{{/if}}</td>
|
||||
<td>{{#if isInvited}}<a class="uninvite-link" href="#"><i class="icon-check"></i>Uninvite</a>{{else}}<a href="#" class="invite-link">Invite</a>{{/if}}</td>
|
||||
<td>{{#if isAdmin}}<a class="unadmin-link" href="#"><i class="icon-check unadmin-link"></i>Unadmin</a>{{else}}<a href="#" class="admin-link">Make admin</a>{{/if}}</td>
|
||||
</tr>
|
||||
</template>
|
23
lib/users.js
23
lib/users.js
|
@ -49,6 +49,21 @@ userProfileComplete = function(user) {
|
|||
// Permissions
|
||||
|
||||
canView = function(user){
|
||||
if(getSetting('requireViewInvite')==true){
|
||||
if(!user){
|
||||
Router.goto('no_account');
|
||||
return false;
|
||||
}
|
||||
if(isAdmin(user))
|
||||
return true;
|
||||
if(user.isInvited){
|
||||
return true;
|
||||
}else{
|
||||
Router.goto('no_invite');
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
canUpvote = function(user, collection){
|
||||
|
@ -56,7 +71,7 @@ canUpvote = function(user, collection){
|
|||
return false
|
||||
if(isAdmin(user))
|
||||
return true;
|
||||
if(getSetting('requireInvite')==true){
|
||||
if(getSetting('requirePostInvite')==true){
|
||||
return user.isInvited;
|
||||
}
|
||||
return true;
|
||||
|
@ -66,7 +81,7 @@ canDownvote = function(user, collection){
|
|||
return false
|
||||
if(isAdmin(user))
|
||||
return true;
|
||||
if(getSetting('requireInvite')==true){
|
||||
if(getSetting('requirePostInvite')==true){
|
||||
return user.isInvited;
|
||||
}
|
||||
return true;
|
||||
|
@ -76,7 +91,7 @@ canPost = function(user){
|
|||
return false
|
||||
if(isAdmin(user))
|
||||
return true;
|
||||
if(getSetting('requireInvite')==true){
|
||||
if(getSetting('requirePostInvite')==true){
|
||||
return user.isInvited;
|
||||
}
|
||||
return true;
|
||||
|
@ -86,7 +101,7 @@ canComment = function(user){
|
|||
return false;
|
||||
if(isAdmin(user))
|
||||
return true;
|
||||
if(getSetting('requireInvite')==true){
|
||||
if(getSetting('requirePostInvite')==true){
|
||||
return user.isInvited;
|
||||
}
|
||||
return true;
|
||||
|
|
Loading…
Add table
Reference in a new issue