1<?php
2
3// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the GNU Affero General Public License v3.0.
4// See the LICENCE file in the repository root for full licence text.
5
6declare(strict_types=1);
7
8namespace App\Http\Controllers\Teams;
9
10use App\Http\Controllers\Controller;
11use App\Models\Team;
12use App\Models\TeamMember;
13use Symfony\Component\HttpFoundation\Response;
14
15class MembersController extends Controller
16{
17 public function __construct()
18 {
19 parent::__construct();
20
21 $this->middleware('auth');
22 }
23
24 public function destroy(string $teamId, string $userId): Response
25 {
26 $teamMember = TeamMember::where([
27 'team_id' => $teamId,
28 'user_id' => $userId,
29 ])->firstOrFail();
30
31 if ($teamMember->user_id === \Auth::user()->getKey()) {
32 abort(422, 'can not remove self from team');
33 }
34
35 priv_check('TeamUpdate', $teamMember->team)->ensureCan();
36
37 $teamMember->delete();
38 \Session::flash('popup', osu_trans('teams.members.destroy.success'));
39
40 return response(null, 204);
41 }
42
43 public function index(string $teamId): Response
44 {
45 $team = Team::findOrFail($teamId);
46
47 priv_check('TeamUpdate', $team)->ensureCan();
48
49 $team->load('members.user');
50
51 return ext_view('teams.members.index', compact('team'));
52 }
53}