Files
econom/app/Http/Controllers/Teams/TeamMemberController.php
brusnitsyn fb2e6c58e3
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled
first commit
2026-04-06 00:06:00 +09:00

52 lines
1.3 KiB
PHP

<?php
namespace App\Http\Controllers\Teams;
use App\Enums\TeamRole;
use App\Http\Controllers\Controller;
use App\Http\Requests\Teams\UpdateTeamMemberRequest;
use App\Models\Team;
use App\Models\User;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Gate;
class TeamMemberController extends Controller
{
/**
* Update the specified team member's role.
*/
public function update(UpdateTeamMemberRequest $request, Team $team, User $user): RedirectResponse
{
Gate::authorize('updateMember', $team);
$newRole = TeamRole::from($request->validated('role'));
$team->memberships()
->where('user_id', $user->id)
->firstOrFail()
->update(['role' => $newRole]);
return to_route('teams.edit', ['team' => $team->slug]);
}
/**
* Remove the specified team member.
*/
public function destroy(Team $team, User $user): RedirectResponse
{
Gate::authorize('removeMember', $team);
abort_if($team->owner()?->is($user), 403, 'The team owner cannot be removed.');
$team->memberships()
->where('user_id', $user->id)
->delete();
if ($user->isCurrentTeam($team)) {
$user->switchTeam($user->personalTeam());
}
return to_route('teams.edit', ['team' => $team->slug]);
}
}