Little debug page with routes.

This commit is contained in:
James Cole
2024-12-23 14:35:27 +01:00
parent e1785898ba
commit 3a274dcaa7
3 changed files with 176 additions and 20 deletions

View File

@@ -25,7 +25,6 @@ declare(strict_types=1);
namespace FireflyIII\Http\Controllers; namespace FireflyIII\Http\Controllers;
use Carbon\Carbon; use Carbon\Carbon;
use Exception;
use FireflyIII\Exceptions\FireflyException; use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Http\Middleware\IsDemoUser; use FireflyIII\Http\Middleware\IsDemoUser;
use FireflyIII\Models\AccountType; use FireflyIII\Models\AccountType;
@@ -34,14 +33,17 @@ use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface;
use FireflyIII\Support\Http\Controllers\GetConfigurationData; use FireflyIII\Support\Http\Controllers\GetConfigurationData;
use FireflyIII\Support\Models\AccountBalanceCalculator; use FireflyIII\Support\Models\AccountBalanceCalculator;
use FireflyIII\User; use FireflyIII\User;
use Http\Discovery\Exception\NotFoundException;
use Illuminate\Contracts\View\Factory; use Illuminate\Contracts\View\Factory;
use Illuminate\Http\RedirectResponse; use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Routing\Redirector; use Illuminate\Routing\Redirector;
use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Route;
use Illuminate\View\View; use Illuminate\View\View;
use Monolog\Handler\RotatingFileHandler; use Monolog\Handler\RotatingFileHandler;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
/** /**
* Class DebugController * Class DebugController
@@ -59,6 +61,61 @@ class DebugController extends Controller
$this->middleware(IsDemoUser::class)->except(['displayError']); $this->middleware(IsDemoUser::class)->except(['displayError']);
} }
public function routes(): never
{
if(!auth()->user()->hasRole('owner')) {
throw new NotFoundHttpException();
}
$routes = Route::getRoutes();
$return = [];
/** @var \Illuminate\Routing\Route $route */
foreach ($routes as $route) {
// skip API and other routes.
if (
str_starts_with($route->uri(), 'api') ||
str_starts_with($route->uri(), '_debugbar') ||
str_starts_with($route->uri(), '_ignition') ||
str_starts_with($route->uri(), 'oauth') ||
str_starts_with($route->uri(), 'sanctum')
) {
continue;
}
// skip non GET routes
if (!in_array('GET', $route->methods())) {
continue;
}
// no name route:
if (null === $route->getName()) {
var_dump($route);
exit;
}
if (!str_contains($route->uri(), '{')) {
$return[$route->getName()] = route($route->getName());
continue;
}
$params = [];
foreach ($route->parameterNames() as $name) {
$params[] = $this->getParameter($name);
}
$return[$route->getName()] = route($route->getName(), $params);
}
$count = 0;
echo '<hr>';
echo '<h1>Routes</h1>';
echo sprintf('<h2>%s</h2>', $count);
foreach($return as $name => $path) {
echo sprintf('<a href="%1$s">%2$s</a><br>', $path, $name) . PHP_EOL;
$count++;
if(0 === $count % 10) {
echo '<hr>';
echo sprintf('<h2>%s</h2>', $count);
}
}
exit;
var_dump($return);
}
/** /**
* Show all possible errors. * Show all possible errors.
* *
@@ -344,4 +401,93 @@ class DebugController extends Controller
return redirect(route('home')); return redirect(route('home'));
} }
private function getParameter(string $name): string
{
switch ($name) {
default:
throw new FireflyException(sprintf('Unknown parameter "%s"', $name));
case 'cliToken':
case 'token':
case 'code':
case 'oldAddressHash':
return 'fake-token';
case 'objectType':
return 'asset';
case 'account':
return '1';
case 'start_date':
return '20241201';
case 'end_date':
return '20241231';
case 'attachment':
return '1';
case 'bill':
return '1';
case 'budget':
return '1';
case 'budgetLimit':
return '1';
case 'category':
return '1';
case 'currency':
return '1';
case 'fromCurrencyCode':
return 'EUR';
case 'toCurrencyCode':
return 'USD';
case 'accountList':
return '1,6';
case 'budgetList':
return '1,2';
case 'categoryList':
return '1,2';
case 'doubleList':
return '1,2';
case 'tagList':
return '1,2';
case 'tag':
return '1';
case 'piggyBank':
return '1';
case 'objectGroup':
return '1';
case 'route':
return 'accounts';
case 'specificPage':
return 'show';
case 'recurrence':
return '1';
case 'tj':
return '1';
case 'reportType':
return 'default';
case 'ruleGroup':
return '1';
case 'rule':
return '1';
case 'tagOrId':
return '1';
case 'transactionGroup':
return '1';
case 'journalList':
return '1,2';
case 'transactionType':
return 'withdrawal';
case 'journalLink':
return '1';
case 'webhook':
return '1';
case 'user':
return '1';
case 'linkType':
return '1';
case 'userGroup':
return '1';
case 'date':
return '20241201';
}
}
} }

View File

@@ -59,13 +59,14 @@
<td colspan="1" style="text-align:right;border-top:1px #aaa solid;"> <td colspan="1" style="text-align:right;border-top:1px #aaa solid;">
{% for sum in group.sums %} {% for sum in group.sums %}
{% if group.transaction_type == 'Deposit' %} {% if group.transaction_type == 'Deposit' %}
{{ formatAmountBySymbol(sum.amount*-1, sum.currency_symbol, sum.currency_decimal_places) }}{% if loop.index != group.sums|length %},{% endif %} {{ formatAmountBySymbol(sum.amount*-1, sum.currency_symbol, sum.currency_decimal_places) }}(TODO NATIVE){% if loop.index != group.sums|length %},{% endif %}
{% elseif group.transaction_type == 'Transfer' %} {% elseif group.transaction_type == 'Transfer' %}
<span class="text-info money-transfer"> <span class="text-info money-transfer">
{{ formatAmountBySymbol(sum.amount*-1, sum.currency_symbol, sum.currency_decimal_places, false) }}{% if loop.index != group.sums|length %},{% endif %} {{ formatAmountBySymbol(sum.amount*-1, sum.currency_symbol, sum.currency_decimal_places, false) }}(TODO NATIVE){% if loop.index != group.sums|length %},{% endif %}
</span> </span>
{% else %} {% else %}
{{ formatAmountBySymbol(sum.amount, sum.currency_symbol, sum.currency_decimal_places) }}{% if loop.index != group.sums|length %},{% endif %} {{ formatAmountBySymbol(sum.amount, sum.currency_symbol, sum.currency_decimal_places) }}(TODO NATIVE){% if loop.index != group.sums|length %},{% endif %}
{% endif %} {% endif %}
{% endfor %} {% endfor %}
</td> </td>
@@ -153,6 +154,7 @@
{% if null != transaction.foreign_amount %} {% if null != transaction.foreign_amount %}
({{ formatAmountBySymbol(transaction.foreign_amount*-1, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) ({{ formatAmountBySymbol(transaction.foreign_amount*-1, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }})
{% endif %} {% endif %}
(TODO NATIVE1)
{# transfer #} {# transfer #}
{% elseif transaction.transaction_type_type == 'Transfer' %} {% elseif transaction.transaction_type_type == 'Transfer' %}
<span class="text-info money-transfer"> <span class="text-info money-transfer">
@@ -160,6 +162,7 @@
{% if null != transaction.foreign_amount %} {% if null != transaction.foreign_amount %}
({{ formatAmountBySymbol(transaction.foreign_amount*-1, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places, false) }}) ({{ formatAmountBySymbol(transaction.foreign_amount*-1, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places, false) }})
{% endif %} {% endif %}
(TODO NATIVE2)
</span> </span>
{# opening balance #} {# opening balance #}
{% elseif transaction.transaction_type_type == 'Opening balance' %} {% elseif transaction.transaction_type_type == 'Opening balance' %}
@@ -168,11 +171,13 @@
{% if null != transaction.foreign_amount %} {% if null != transaction.foreign_amount %}
({{ formatAmountBySymbol(transaction.foreign_amount*-1, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) ({{ formatAmountBySymbol(transaction.foreign_amount*-1, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }})
{% endif %} {% endif %}
(TODO NATIVE3)
{% else %} {% else %}
{{ formatAmountBySymbol(transaction.amount, transaction.currency_symbol, transaction.currency_decimal_places) }} {{ formatAmountBySymbol(transaction.amount, transaction.currency_symbol, transaction.currency_decimal_places) }}
{% if null != transaction.foreign_amount %} {% if null != transaction.foreign_amount %}
({{ formatAmountBySymbol(transaction.foreign_amount, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) ({{ formatAmountBySymbol(transaction.foreign_amount, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }})
{% endif %} {% endif %}
(TODO NATIVE4)
{% endif %} {% endif %}
{# reconciliation #} {# reconciliation #}
{% elseif transaction.transaction_type_type == 'Reconciliation' %} {% elseif transaction.transaction_type_type == 'Reconciliation' %}
@@ -181,11 +186,13 @@
{% if null != transaction.foreign_amount %} {% if null != transaction.foreign_amount %}
({{ formatAmountBySymbol(transaction.foreign_amount*-1, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) ({{ formatAmountBySymbol(transaction.foreign_amount*-1, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }})
{% endif %} {% endif %}
(TODO NATIVE5)
{% else %} {% else %}
{{ formatAmountBySymbol(transaction.amount, transaction.currency_symbol, transaction.currency_decimal_places) }} {{ formatAmountBySymbol(transaction.amount, transaction.currency_symbol, transaction.currency_decimal_places) }}
{% if null != transaction.foreign_amount %} {% if null != transaction.foreign_amount %}
({{ formatAmountBySymbol(transaction.foreign_amount, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) ({{ formatAmountBySymbol(transaction.foreign_amount, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }})
{% endif %} {% endif %}
(TODO NATIVE6)
{% endif %} {% endif %}
{# liability credit #} {# liability credit #}
{% elseif transaction.transaction_type_type == 'Liability credit' %} {% elseif transaction.transaction_type_type == 'Liability credit' %}
@@ -194,11 +201,13 @@
{% if null != transaction.foreign_amount %} {% if null != transaction.foreign_amount %}
({{ formatAmountBySymbol(transaction.foreign_amount, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) ({{ formatAmountBySymbol(transaction.foreign_amount, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }})
{% endif %} {% endif %}
(TODO NATIVE7)
{% else %} {% else %}
{{ formatAmountBySymbol(transaction.amount*-1, transaction.currency_symbol, transaction.currency_decimal_places) }} {{ formatAmountBySymbol(transaction.amount*-1, transaction.currency_symbol, transaction.currency_decimal_places) }}
{% if null != transaction.foreign_amount %} {% if null != transaction.foreign_amount %}
({{ formatAmountBySymbol(transaction.foreign_amount*-1, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) ({{ formatAmountBySymbol(transaction.foreign_amount*-1, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }})
{% endif %} {% endif %}
(TODO NATIVE8)
{% endif %} {% endif %}
@@ -208,6 +217,7 @@
{% if null != transaction.foreign_amount %} {% if null != transaction.foreign_amount %}
({{ formatAmountBySymbol(transaction.foreign_amount, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }}) ({{ formatAmountBySymbol(transaction.foreign_amount, transaction.foreign_currency_symbol, transaction.foreign_currency_decimal_places) }})
{% endif %} {% endif %}
(TODO NATIVE9)
{% endif %} {% endif %}
</td> </td>
<td style=" {{ style|raw }}"> <td style=" {{ style|raw }}">

View File

@@ -80,7 +80,7 @@ Route::group(
Route::group( Route::group(
['middleware' => 'binders-only', 'namespace' => 'FireflyIII\Http\Controllers\System'], ['middleware' => 'binders-only', 'namespace' => 'FireflyIII\Http\Controllers\System'],
static function (): void { static function (): void {
Route::get('offline', static fn () => view('errors.offline')); //Route::get('offline', static fn () => view('errors.offline'));
Route::get('health', ['uses' => 'HealthcheckController@check', 'as' => 'healthcheck']); Route::get('health', ['uses' => 'HealthcheckController@check', 'as' => 'healthcheck']);
} }
); );
@@ -117,7 +117,7 @@ Route::group(
Route::get('error', ['uses' => 'DebugController@displayError', 'as' => 'error']); Route::get('error', ['uses' => 'DebugController@displayError', 'as' => 'error']);
Route::post('logout', ['uses' => 'Auth\LoginController@logout', 'as' => 'logout']); Route::post('logout', ['uses' => 'Auth\LoginController@logout', 'as' => 'logout']);
Route::get('flush', ['uses' => 'DebugController@flush', 'as' => 'flush']); Route::get('flush', ['uses' => 'DebugController@flush', 'as' => 'flush']);
// Route::get('routes', ['uses' => 'DebugController@routes', 'as' => 'routes']); Route::get('routes', ['uses' => 'DebugController@routes', 'as' => 'routes']);
Route::get('debug', 'DebugController@index')->name('debug'); Route::get('debug', 'DebugController@index')->name('debug');
} }
); );