Add files and updates necessary to manage new layout.

This commit is contained in:
James Cole 2022-02-27 10:04:08 +01:00
parent 3f61b6d707
commit aa7d4a610b
No known key found for this signature in database
GPG Key ID: B49A324B7EAD6D80
9 changed files with 106 additions and 45 deletions

View File

@ -103,7 +103,7 @@ class HomeController extends Controller
public function index(AccountRepositoryInterface $repository): mixed public function index(AccountRepositoryInterface $repository): mixed
{ {
if ('v3' === config('firefly.layout')) { if ('v3' === config('firefly.layout')) {
die('Please set your layout to "v1".'); return view('pwa');
} }
$types = config('firefly.accountTypesByIdentifier.asset'); $types = config('firefly.accountTypesByIdentifier.asset');
$count = $repository->count($types); $count = $repository->count($types);

View File

@ -47,6 +47,7 @@ use Illuminate\Routing\Middleware\ThrottleRequests;
use Illuminate\Session\Middleware\AuthenticateSession; use Illuminate\Session\Middleware\AuthenticateSession;
use Illuminate\View\Middleware\ShareErrorsFromSession; use Illuminate\View\Middleware\ShareErrorsFromSession;
use Laravel\Passport\Http\Middleware\CreateFreshApiToken; use Laravel\Passport\Http\Middleware\CreateFreshApiToken;
use Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful;
use PragmaRX\Google2FALaravel\Middleware as MFAMiddleware; use PragmaRX\Google2FALaravel\Middleware as MFAMiddleware;
/** /**
@ -177,9 +178,9 @@ class Kernel extends HttpKernel
CreateFreshApiToken::class, CreateFreshApiToken::class,
], ],
'apiX' => [ 'api' => [
'auth:api', EnsureFrontendRequestsAreStateful::class,
//'throttle:60,1', 'auth:api,sanctum',
'bindings', 'bindings',
], ],
'apiY' => [ 'apiY' => [

View File

@ -26,6 +26,7 @@ use Adldap\Laravel\Middleware\WindowsAuthenticate;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use Laravel\Passport\Passport; use Laravel\Passport\Passport;
use Laravel\Sanctum\Sanctum;
use URL; use URL;
/** /**
@ -48,6 +49,7 @@ class AppServiceProvider extends ServiceProvider
if (config('ldap_auth.identifiers.windows.enabled', false)) { if (config('ldap_auth.identifiers.windows.enabled', false)) {
$this->app['router']->pushMiddlewareToGroup('web', WindowsAuthenticate::class); $this->app['router']->pushMiddlewareToGroup('web', WindowsAuthenticate::class);
} }
Sanctum::ignoreMigrations();
} }
/** /**

View File

@ -49,48 +49,25 @@ class RouteServiceProvider extends ServiceProvider
/** /**
* Define the routes for the application. * Define the routes for the application.
*/ */
public function map(): void public function boot(): void
{ {
$this->mapApiRoutes(); $this->routes(function () {
$this->mapCronApiRoutes(); Route::prefix('api/v1')
$this->mapWebRoutes(); ->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
Route::prefix('api/v1/cron')
->middleware('apiY')
->namespace($this->namespace)
->group(base_path('routes/api-noauth.php'));
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
});
} }
/**
* Define the "api" routes for the application.
*
* These routes are typically stateless.
*/
protected function mapApiRoutes(): void
{
Route::prefix('api/v1')
->middleware('apiX')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
}
/**
* Define the "api" routes for the application.
*
* These routes are typically stateless.
*/
protected function mapCronApiRoutes(): void
{
Route::prefix('api/v1/cron')
->middleware('apiY')
->namespace($this->namespace)
->group(base_path('routes/api-noauth.php'));
}
/**
* Define the "web" routes for the application.
*
* These routes all receive session state, CSRF protection, etc.
*/
protected function mapWebRoutes(): void
{
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
}
} }

View File

@ -162,7 +162,7 @@ class User extends Authenticatable
use Notifiable, HasApiTokens; use Notifiable, HasApiTokens;
/** /**
* The attributes that should be casted to native types. * The attributes that should be cast to native types.
* *
* @var array * @var array
*/ */

70
config/sanctum.php Normal file
View File

@ -0,0 +1,70 @@
<?php
declare(strict_types=1);
return [
/*
|--------------------------------------------------------------------------
| Stateful Domains
|--------------------------------------------------------------------------
|
| Requests from the following domains / hosts will receive stateful API
| authentication cookies. Typically, these should include your local
| and production domains which access your API via a frontend SPA.
|
*/
'stateful' => explode(
',', env(
'SANCTUM_STATEFUL_DOMAINS', sprintf(
'%s%s',
'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1',
env('APP_URL') ? ',' . parse_url(env('APP_URL'), PHP_URL_HOST) : ''
)
)
),
/*
|--------------------------------------------------------------------------
| Sanctum Guards
|--------------------------------------------------------------------------
|
| This array contains the authentication guards that will be checked when
| Sanctum is trying to authenticate a request. If none of these guards
| are able to authenticate the request, Sanctum will use the bearer
| token that's present on an incoming request for authentication.
|
*/
'guard' => ['web'],
/*
|--------------------------------------------------------------------------
| Expiration Minutes
|--------------------------------------------------------------------------
|
| This value controls the number of minutes until an issued token will be
| considered expired. If this value is null, personal access tokens do
| not expire. This won't tweak the lifetime of first-party sessions.
|
*/
'expiration' => null,
/*
|--------------------------------------------------------------------------
| Sanctum Middleware
|--------------------------------------------------------------------------
|
| When authenticating your first-party SPA with Sanctum you may need to
| customize some of the middleware Sanctum uses while processing the
| request. You may change the middleware listed below as required.
|
*/
'middleware' => [
'verify_csrf_token' => \FireflyIII\Http\Middleware\VerifyCsrfToken::class,
'encrypt_cookies' => \FireflyIII\Http\Middleware\EncryptCookies::class,
],
];

View File

@ -24,6 +24,15 @@ declare(strict_types=1);
return [ return [
'home' => 'Home', 'home' => 'Home',
'budgets' => 'Budgets',
'subscriptions' => 'Subscriptions',
'transactions' => 'Transactions',
'title_expenses' => 'Expenses',
'title_withdrawal' => 'Expenses',
'title_revenue' => 'Revenue / income',
'title_deposit' => 'Revenue / income',
'title_transfer' => 'Transfers',
'title_transfers' => 'Transfers',
'edit_currency' => 'Edit currency ":name"', 'edit_currency' => 'Edit currency ":name"',
'delete_currency' => 'Delete currency ":name"', 'delete_currency' => 'Delete currency ":name"',
'newPiggyBank' => 'Create a new piggy bank', 'newPiggyBank' => 'Create a new piggy bank',

View File

@ -1111,6 +1111,7 @@ return [
'make_new_revenue_account' => 'Create a new revenue account', 'make_new_revenue_account' => 'Create a new revenue account',
'make_new_liabilities_account' => 'Create a new liability', 'make_new_liabilities_account' => 'Create a new liability',
'asset_accounts' => 'Asset accounts', 'asset_accounts' => 'Asset accounts',
'undefined_accounts' => 'Accounts',
'asset_accounts_inactive' => 'Asset accounts (inactive)', 'asset_accounts_inactive' => 'Asset accounts (inactive)',
'expense_accounts' => 'Expense accounts', 'expense_accounts' => 'Expense accounts',
'expense_accounts_inactive' => 'Expense accounts (inactive)', 'expense_accounts_inactive' => 'Expense accounts (inactive)',

1
resources/views/pwa.twig Normal file
View File

@ -0,0 +1 @@
{% include('../public/v3/index.html') %}