From aa7d4a610b56829ff77ece47dbfd10629d8dba3e Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 27 Feb 2022 10:04:08 +0100 Subject: [PATCH] Add files and updates necessary to manage new layout. --- app/Http/Controllers/HomeController.php | 2 +- app/Http/Kernel.php | 7 +-- app/Providers/AppServiceProvider.php | 2 + app/Providers/RouteServiceProvider.php | 57 ++++++-------------- app/User.php | 2 +- config/sanctum.php | 70 +++++++++++++++++++++++++ resources/lang/en_US/breadcrumbs.php | 9 ++++ resources/lang/en_US/firefly.php | 1 + resources/views/pwa.twig | 1 + 9 files changed, 106 insertions(+), 45 deletions(-) create mode 100644 config/sanctum.php create mode 100644 resources/views/pwa.twig diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index aaeed19a81..8ffc94b11c 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -103,7 +103,7 @@ class HomeController extends Controller public function index(AccountRepositoryInterface $repository): mixed { if ('v3' === config('firefly.layout')) { - die('Please set your layout to "v1".'); + return view('pwa'); } $types = config('firefly.accountTypesByIdentifier.asset'); $count = $repository->count($types); diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 6bc7fbb51e..27474d02af 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -47,6 +47,7 @@ use Illuminate\Routing\Middleware\ThrottleRequests; use Illuminate\Session\Middleware\AuthenticateSession; use Illuminate\View\Middleware\ShareErrorsFromSession; use Laravel\Passport\Http\Middleware\CreateFreshApiToken; +use Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful; use PragmaRX\Google2FALaravel\Middleware as MFAMiddleware; /** @@ -177,9 +178,9 @@ class Kernel extends HttpKernel CreateFreshApiToken::class, ], - 'apiX' => [ - 'auth:api', - //'throttle:60,1', + 'api' => [ + EnsureFrontendRequestsAreStateful::class, + 'auth:api,sanctum', 'bindings', ], 'apiY' => [ diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 7548e10fc9..8675bd9ec3 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -26,6 +26,7 @@ use Adldap\Laravel\Middleware\WindowsAuthenticate; use Illuminate\Support\Facades\Schema; use Illuminate\Support\ServiceProvider; use Laravel\Passport\Passport; +use Laravel\Sanctum\Sanctum; use URL; /** @@ -48,6 +49,7 @@ class AppServiceProvider extends ServiceProvider if (config('ldap_auth.identifiers.windows.enabled', false)) { $this->app['router']->pushMiddlewareToGroup('web', WindowsAuthenticate::class); } + Sanctum::ignoreMigrations(); } /** diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 6658a402b7..d27004ea11 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -49,48 +49,25 @@ class RouteServiceProvider extends ServiceProvider /** * Define the routes for the application. */ - public function map(): void + public function boot(): void { - $this->mapApiRoutes(); - $this->mapCronApiRoutes(); - $this->mapWebRoutes(); + $this->routes(function () { + Route::prefix('api/v1') + ->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')); - } } diff --git a/app/User.php b/app/User.php index ac707d8d60..0e69a6ca17 100644 --- a/app/User.php +++ b/app/User.php @@ -162,7 +162,7 @@ class User extends Authenticatable use Notifiable, HasApiTokens; /** - * The attributes that should be casted to native types. + * The attributes that should be cast to native types. * * @var array */ diff --git a/config/sanctum.php b/config/sanctum.php new file mode 100644 index 0000000000..194cceb0d6 --- /dev/null +++ b/config/sanctum.php @@ -0,0 +1,70 @@ + 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, + ], + +]; diff --git a/resources/lang/en_US/breadcrumbs.php b/resources/lang/en_US/breadcrumbs.php index 1003c3a735..25ec9c554a 100644 --- a/resources/lang/en_US/breadcrumbs.php +++ b/resources/lang/en_US/breadcrumbs.php @@ -24,6 +24,15 @@ declare(strict_types=1); return [ '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"', 'delete_currency' => 'Delete currency ":name"', 'newPiggyBank' => 'Create a new piggy bank', diff --git a/resources/lang/en_US/firefly.php b/resources/lang/en_US/firefly.php index 23e161aac2..aacb95b31d 100644 --- a/resources/lang/en_US/firefly.php +++ b/resources/lang/en_US/firefly.php @@ -1111,6 +1111,7 @@ return [ 'make_new_revenue_account' => 'Create a new revenue account', 'make_new_liabilities_account' => 'Create a new liability', 'asset_accounts' => 'Asset accounts', + 'undefined_accounts' => 'Accounts', 'asset_accounts_inactive' => 'Asset accounts (inactive)', 'expense_accounts' => 'Expense accounts', 'expense_accounts_inactive' => 'Expense accounts (inactive)', diff --git a/resources/views/pwa.twig b/resources/views/pwa.twig new file mode 100644 index 0000000000..93eb7e3841 --- /dev/null +++ b/resources/views/pwa.twig @@ -0,0 +1 @@ +{% include('../public/v3/index.html') %}