diff --git a/app/Http/Controllers/TeamController.php b/app/Http/Controllers/TeamController.php
index e4eb513..dca57fc 100644
--- a/app/Http/Controllers/TeamController.php
+++ b/app/Http/Controllers/TeamController.php
@@ -7,6 +7,7 @@
use App\Http\Requests\TeamUpdateRequest;
use App\Models\Team;
use Illuminate\Http\Request;
+use Spatie\Permission\Models\Role;
class TeamController extends Controller
{
@@ -20,7 +21,8 @@ public function setCurrent(SetCurrentTeamRequest $request, Team $team)
public function edit(Request $request)
{
return view('team.edit', [
- 'team' => $request->user()->currentTeam
+ 'team' => $request->user()->currentTeam->load(['members.roles', 'invites.team']),
+ 'roles' => Role::get()
]);
}
diff --git a/app/Policies/TeamPolicy.php b/app/Policies/TeamPolicy.php
index cba7770..834cccc 100644
--- a/app/Policies/TeamPolicy.php
+++ b/app/Policies/TeamPolicy.php
@@ -64,6 +64,12 @@ public function revokeInvite(User $user, Team $team)
public function changeMemberRole(User $user, Team $team, User $member)
{
+ if ($user->id === $member->id) {
+ return $team->members->filter(function ($teamMember) {
+ return $teamMember->hasRole('team admin');
+ })->count() >= 2;
+ }
+
if ($team->members->doesntContain($member)) {
return false;
}
diff --git a/resources/views/components/team-member-item.blade.php b/resources/views/components/team-member-item.blade.php
index 33f43a7..c7ab269 100644
--- a/resources/views/components/team-member-item.blade.php
+++ b/resources/views/components/team-member-item.blade.php
@@ -57,7 +57,7 @@