Files
moonwell-web/app/Http/Controllers/CabinetController.php
T

56 lines
2.1 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Http\Requests\ChangePasswordRequest;
use App\Services\AzerothCoreAccountService;
use App\Services\BalanceService;
use App\Services\GameClientDownloadService;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;
use Throwable;
class CabinetController extends Controller
{
public function index(Request $request, AzerothCoreAccountService $accounts, BalanceService $balances): View
{
$user = $request->user();
return view('cabinet.index', [
'user' => $user,
'characters' => $accounts->charactersForAccount($user->id),
'clientFilename' => config('moonwell.client.object_key'),
'balance' => $balances->balance($user->id),
'balanceTransactions' => $balances->recentTransactions($user->id),
'minimumDeposit' => config('services.robokassa.minimum_amount'),
'maximumDeposit' => config('services.robokassa.maximum_amount'),
'tearsPerRuble' => config('services.robokassa.tears_per_ruble'),
]);
}
public function updatePassword(ChangePasswordRequest $request, AzerothCoreAccountService $accounts): RedirectResponse
{
$user = $request->user();
if (! $accounts->validatePassword($user, $request->string('current_password')->toString())) {
return back()->withErrors(['current_password' => 'Текущий пароль указан неверно.']);
}
$accounts->updatePassword($user, $request->string('password')->toString());
return back()->with('status', 'Пароль успешно обновлён.');
}
public function client(GameClientDownloadService $clientDownloadService): RedirectResponse
{
try {
return redirect()->away($clientDownloadService->temporaryUrl());
} catch (Throwable $exception) {
report($exception);
return back()->with('error', 'Не удалось получить ссылку на клиент. Попробуй ещё раз позже.');
}
}
}