. */ namespace App\Http\Controllers\Account; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use App\Http\Controllers\Controller; use App\AccountTombstone; use App\Http\Requests\CreateAccountRequest; use App\Services\AccountService; class AccountController extends Controller { public function documentation(Request $request) { return view('account.documentation', [ 'documentation' => markdownDocumentationView('account.documentation_markdown') ]); } public function blocked(Request $request) { return view('account.blocked'); } public function panel(Request $request) { return view('account.dashboard', [ 'account' => $request->user() ]); } public function store(CreateAccountRequest $request) { $account = (new AccountService(api: false))->store($request); $request->validate(['h-captcha-response' => captchaConfigured() ? 'required|HCaptcha' : '']); Auth::login($account); if ($request->has('phone')) { (new AccountService(api: false))->requestPhoneChange($request); return redirect()->route('account.phone.validate'); } elseif ($request->has('email')) { (new AccountService(api: false))->requestEmailChange($request); return redirect()->route('account.email.validate'); } return abort(404); } public function delete(Request $request) { return view('account.delete', [ 'account' => $request->user() ]); } public function destroy(Request $request) { $request->validate(['identifier' => 'required|same:identifier_confirm']); if (!$request->user()->hasTombstone()) { $tombstone = new AccountTombstone(); $tombstone->username = $request->user()->username; $tombstone->domain = $request->user()->domain; $tombstone->save(); } $request->user()->delete(); Auth::logout(); return redirect()->route('account.login'); } }