the browser-facing portion of osu!
at master 1.3 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; 9 10use App\Transformers\LegacyIrcKeyTransformer; 11use Auth; 12use Exception; 13 14class LegacyIrcKeyController extends Controller 15{ 16 public function __construct() 17 { 18 $this->middleware('auth'); 19 $this->middleware('verify-user'); 20 } 21 22 public function destroy() 23 { 24 Auth::user()->legacyIrcKey?->delete(); 25 26 return response(null, 204); 27 } 28 29 public function store() 30 { 31 $user = Auth::user(); 32 33 priv_check('LegacyIrcKeyStore')->ensureCan(); 34 35 $key = $user->legacyIrcKey; 36 37 if ($key === null) { 38 for ($i = 0; $i < 10; $i++) { 39 try { 40 $key = $user->legacyIrcKey()->make([ 41 'token' => bin2hex(random_bytes(4)), 42 ]); 43 $key->saveOrExplode(); 44 break; 45 } catch (Exception $e) { 46 if (!is_sql_unique_exception($e)) { 47 throw $e; 48 } 49 } 50 } 51 } 52 53 return json_item($key, new LegacyIrcKeyTransformer()); 54 } 55}