the browser-facing portion of osu!
at master 1.4 kB view raw
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}