diff --git a/src/controllers/challenges.js b/src/controllers/challenges.js index d09decf572..71e1d82d33 100644 --- a/src/controllers/challenges.js +++ b/src/controllers/challenges.js @@ -159,8 +159,8 @@ api.create = function(req, res, next){ prize = +req.body.prize; if (!group) return cb({code:404, err:"Group." + req.body.group + " not found"}); - //if (group.leaderOnly.challenges && group.leader !== user._id) - // return cb({code:401, err: "Only the group leader can create challenges"}); + if (group.leaderOnly && group.leaderOnly.challenges && group.leader !== user._id) + return cb({code:401, err: "Only the group leader can create challenges"}); // If they're adding a prize, do some validation if (prize < 0) return cb({code:401, err: 'Challenge prize must be >= 0'}); diff --git a/src/controllers/groups.js b/src/controllers/groups.js index 50272cdab2..1d365d7d8b 100644 --- a/src/controllers/groups.js +++ b/src/controllers/groups.js @@ -187,7 +187,7 @@ api.update = function(req, res, next) { if(group.leader !== user._id) return res.json(401, {err: "Only the group leader can update the group!"}); - 'name description logo logo leaderMessage leader'.split(' ').forEach(function(attr){ + 'name description logo logo leaderMessage leader leaderOnly'.split(' ').forEach(function(attr){ group[attr] = req.body[attr]; }); diff --git a/src/models/group.js b/src/models/group.js index 1bc275afe4..85653670dc 100644 --- a/src/models/group.js +++ b/src/models/group.js @@ -26,7 +26,10 @@ var GroupSchema = new Schema({ # id: String # }] */ - + leaderOnly: { // restrict group actions to leader (members can't do them) + challenges: {type:Boolean, 'default':false}, + //invites: {type:Boolean, 'default':false} + }, memberCount: {type: Number, 'default': 0}, challengeCount: {type: Number, 'default': 0}, balance: Number, diff --git a/views/options/social/create-group.jade b/views/options/social/create-group.jade index b2211862c8..6c0c4c20e8 100644 --- a/views/options/social/create-group.jade +++ b/views/options/social/create-group.jade @@ -19,5 +19,10 @@ form.col-md-12.form-horizontal(ng-submit='create(newGroup)') span.gem-cost= '4 ' + env.t('gems') p small=env.t('gemCost') + .form-group + .checkbox + label + input(type='checkbox', ng-model='newGroup.leaderOnly.challenges') + | Only group leader can create challenges .form-group(ng-show='type=="party"') input.btn.btn-default.form-control(type='submit', value=env.t('create')) diff --git a/views/options/social/group.jade b/views/options/social/group.jade index 1b1d7a6f84..a3c5e257d8 100644 --- a/views/options/social/group.jade +++ b/views/options/social/group.jade @@ -33,6 +33,11 @@ a.pull-right.gem-wallet(ng-if='group.type!="party"', popover-trigger='mouseenter .form-group label=env.t('logoUrl') input.form-control(type='url', placeholder=env.t('logoUrl'), ng-model='group.logo') + .form-group + .checkbox + label + input(type='checkbox', ng-model='group.leaderOnly.challenges') + | Only group leader can create challenges h4=env.t('assignLeader') select#group-leader-selection(ng-model='group._newLeader', ng-options='member.profile.name for member in group.members')