Skip to content

Commit

Permalink
This closes #220
Browse files Browse the repository at this point in the history
  • Loading branch information
philippejadin committed May 6, 2019
1 parent 42e3417 commit 9ad5eb3
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 11 deletions.
17 changes: 17 additions & 0 deletions app/Http/Controllers/MembershipController.php
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,12 @@ public function destroyConfirm(Request $request, Group $group)
// load a membership for this group and user combination
$membership =Membership::where(['user_id' => $request->user()->id, 'group_id' => $group->id])->firstOrFail();

if ($membership->isAdmin() && $group->admins->count() == 1)
{
flash('You cannot leave this group since you are the unique admin. Promote someone else as admin first.');
return redirect()->back();
}

return view('membership.leave')
->with('group', $group)
->with('tab', 'settings')
Expand Down Expand Up @@ -177,6 +183,7 @@ public function edit(Request $request, Group $group, Membership $membership = nu
*/
public function update(Request $request, Group $group, Membership $membership = null)
{

// load membership for this group and the current user combination
if (!$membership)
{
Expand All @@ -190,7 +197,17 @@ public function update(Request $request, Group $group, Membership $membership =
if ($request->has('membership_level'))
{
$this->authorize('manage-membership', $group);

// handle the case an admin change his own level and is the only one admin of the group... yes it hapened...
if ($membership->isAdmin() && $group->admins->count() == 1 && $request->get('membership_level') < \App\Membership::ADMIN)
{
flash('You cannot remove you as admin since you are the unique admin. Promote someone else as admin first.');
return redirect()->back();
}

$membership->membership = $request->get('membership_level');


}


Expand Down
5 changes: 5 additions & 0 deletions app/Membership.php
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,11 @@ class Membership extends Model
// member is blacklisted and cannot join the group again (not yet in use)
const BLACKLISTED = -30;

public function isAdmin()
{
return $this->membership == \App\Membership::ADMIN;
}

public function votes()
{
return $this->morphedByMany('Vote', 'votable');
Expand Down
35 changes: 24 additions & 11 deletions resources/views/partials/preferences-show.blade.php
Original file line number Diff line number Diff line change
@@ -1,13 +1,26 @@
@auth
@if (Auth::user()->getPreference('show', 'my') == 'my')
<div class="btn-group" role="group">
<a href="?set_preference=show&value=my" class="btn btn-primary">{{trans('messages.my_groups')}}</a>
<a href="?set_preference=show&value=all" class="btn btn-outline-primary">{{trans('messages.all_groups')}}</a>
</div>
@else
<div class="btn-group" role="group">
<a href="?set_preference=show&value=my" class="btn btn-outline-primary">{{trans('messages.my_groups')}}</a>
<a href="?set_preference=show&value=all" class="btn btn-primary">{{trans('messages.all_groups')}}</a>
</div>
@endif
@if (Auth::user()->getPreference('show', 'my') == 'my')

<div class="dropdown">
<button class="btn btn-primary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{{_('Show my groups')}}
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<a href="?set_preference=show&value=my" class="dropdown-item">{{trans('messages.my_groups')}}</a>
<a href="?set_preference=show&value=all" class="dropdown-item">{{trans('messages.all_groups')}}</a>
</div>
</div>

@else
<div class="dropdown">
<button class="btn btn-primary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{{_('Show all groups')}}
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<a href="?set_preference=show&value=my" class="dropdown-item">{{trans('messages.my_groups')}}</a>
<a href="?set_preference=show&value=all" class="dropdown-item">{{trans('messages.all_groups')}}</a>
</div>
</div>

@endif
@endauth

0 comments on commit 9ad5eb3

Please sign in to comment.