diff --git a/public/js/controllers/groupsCtrl.js b/public/js/controllers/groupsCtrl.js index 9f2f41856c..b4f67bad46 100644 --- a/public/js/controllers/groupsCtrl.js +++ b/public/js/controllers/groupsCtrl.js @@ -11,10 +11,15 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Groups', '$http', 'A $scope._editing = {group:false}; $scope.save = function(group){ + if(group._newLeader && group._newLeader._id) group.leader = group._newLeader._id; group.$save(); group._editing = false; } + $scope.assignGroupLeader = function(group){ + if(group._newLeader && group._newLeader._id) group.leader + } + $scope.addWebsite = function(group){ group.websites.push(group._newWebsite); group._newWebsite = ''; diff --git a/src/controllers/groups.js b/src/controllers/groups.js index a57268efff..a6e9764479 100644 --- a/src/controllers/groups.js +++ b/src/controllers/groups.js @@ -143,9 +143,15 @@ api.createGroup = function(req, res, next) { api.updateGroup = function(req, res, next) { var group = res.locals.group; - 'name description logo websites logo leaderMessage'.split(' ').forEach(function(attr){ + var user = res.locals.user; + + if(group.leader !== user._id) + return res.json(401, {err: "Only the group leader can update the group!"}); + + 'name description logo websites logo leaderMessage leader'.split(' ').forEach(function(attr){ group[attr] = req.body[attr]; }); + async.series([ function(cb){group.save(cb);}, function(cb){ @@ -156,7 +162,7 @@ api.updateGroup = function(req, res, next) { if (err) return res.json(500,{err:err}); if (group.type === 'party') removeSelf(results[1], res.locals.user); res.json(results[1]); - }) + }); } api.attachGroup = function(req, res, next) { diff --git a/views/options/groups/group.jade b/views/options/groups/group.jade index 79c17fd767..62be123502 100644 --- a/views/options/groups/group.jade +++ b/views/options/groups/group.jade @@ -36,18 +36,8 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title='Guild Bank' i.icon-remove h4 Assign Group Leader - select#group-leader-selection - option(ng-repeat='member in group.members', selected='member._id == _new.groupLeader') {{username(member.auth,member.profile.name)}} - button(x-bind='click:assignGroupLeader', ng-click='notPorted()') Assign - - div(ng-show='group.websites') - h4 Resources - ul.unstyled - li - a(ng-repeat='website in group.websites', x-bind='click:removeAt', ng-click='notPorted()') - i.icon-trash - a(target='_blank', href='{{website}}') {{website}} - + select#group-leader-selection(ng-model='group._newLeader', ng-options='username(member.auth, member.profile.name) for member in group.members') + div(ng-show='!group._editing') img.pull-right(ng-show='group.logo', style='max-width:150px', ng-src='{{group.logo}}') markdown(ng-model='group.description') @@ -110,8 +100,6 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title='Guild Bank' include ../../shared/formatting-help table(ng-show='group.leaderMessage') tr - td - app:avatar:avatar(profile='{{Members.members[group.leader]}}') td .popover.static-popover.fade.right.in.wide-popover .arrow