From a69aad878e3be7104a1a542d4227c1626ac916a0 Mon Sep 17 00:00:00 2001 From: James Cole Date: Tue, 19 Dec 2017 19:25:50 +0100 Subject: [PATCH] Fix #1056 --- .../Admin/ConfigurationController.php | 6 +- app/Http/Controllers/Admin/HomeController.php | 6 +- app/Http/Controllers/Admin/LinkController.php | 5 +- app/Http/Controllers/Admin/UserController.php | 6 +- app/Http/Controllers/HomeController.php | 6 +- .../Import/ConfigurationController.php | 4 +- .../Controllers/Import/IndexController.php | 4 +- app/Http/Controllers/ProfileController.php | 6 +- .../{IsLimitedUser.php => IsDemoUser.php} | 12 +--- app/Http/Middleware/IsSandStormUser.php | 63 +++++++++++++++++++ app/Import/FileProcessor/CsvProcessor.php | 2 +- .../Import/Configuration/File/Initial.php | 8 ++- public/js/ff/import/status.js | 2 +- resources/lang/en_US/auth.php | 1 + resources/lang/en_US/breadcrumbs.php | 3 +- resources/lang/en_US/config.php | 1 + resources/lang/en_US/demo.php | 1 + resources/lang/en_US/form.php | 3 +- resources/lang/en_US/import.php | 1 + resources/lang/en_US/intro.php | 1 + resources/lang/en_US/list.php | 1 + resources/lang/en_US/pagination.php | 1 + resources/lang/en_US/passwords.php | 1 + resources/lang/en_US/validation.php | 1 + resources/views/partials/menu-sidebar.twig | 2 +- 25 files changed, 114 insertions(+), 33 deletions(-) rename app/Http/Middleware/{IsLimitedUser.php => IsDemoUser.php} (87%) create mode 100644 app/Http/Middleware/IsSandStormUser.php diff --git a/app/Http/Controllers/Admin/ConfigurationController.php b/app/Http/Controllers/Admin/ConfigurationController.php index 4b5c9778d3..8296d41c43 100644 --- a/app/Http/Controllers/Admin/ConfigurationController.php +++ b/app/Http/Controllers/Admin/ConfigurationController.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace FireflyIII\Http\Controllers\Admin; use FireflyIII\Http\Controllers\Controller; -use FireflyIII\Http\Middleware\IsLimitedUser; +use FireflyIII\Http\Middleware\IsDemoUser; +use FireflyIII\Http\Middleware\IsSandStormUser; use FireflyIII\Http\Requests\ConfigurationRequest; use FireflyIII\Support\Facades\FireflyConfig; use Preferences; @@ -51,7 +52,8 @@ class ConfigurationController extends Controller return $next($request); } ); - $this->middleware(IsLimitedUser::class)->except(['index']); + $this->middleware(IsDemoUser::class)->except(['index']); + $this->middleware(IsSandStormUser::class); } /** diff --git a/app/Http/Controllers/Admin/HomeController.php b/app/Http/Controllers/Admin/HomeController.php index c1e214ffc9..55a5265475 100644 --- a/app/Http/Controllers/Admin/HomeController.php +++ b/app/Http/Controllers/Admin/HomeController.php @@ -24,7 +24,8 @@ namespace FireflyIII\Http\Controllers\Admin; use FireflyIII\Events\AdminRequestedTestMessage; use FireflyIII\Http\Controllers\Controller; -use FireflyIII\Http\Middleware\IsLimitedUser; +use FireflyIII\Http\Middleware\IsDemoUser; +use FireflyIII\Http\Middleware\IsSandStormUser; use Illuminate\Http\Request; use Log; use Session; @@ -40,7 +41,8 @@ class HomeController extends Controller public function __construct() { parent::__construct(); - $this->middleware(IsLimitedUser::class)->except(['index']); + $this->middleware(IsDemoUser::class)->except(['index']); + $this->middleware(IsSandStormUser::class)->except(['index']); } diff --git a/app/Http/Controllers/Admin/LinkController.php b/app/Http/Controllers/Admin/LinkController.php index 234b5aec02..032cfd88cb 100644 --- a/app/Http/Controllers/Admin/LinkController.php +++ b/app/Http/Controllers/Admin/LinkController.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace FireflyIII\Http\Controllers\Admin; use FireflyIII\Http\Controllers\Controller; -use FireflyIII\Http\Middleware\IsLimitedUser; +use FireflyIII\Http\Middleware\IsDemoUser; +use FireflyIII\Http\Middleware\IsSandStormUser; use FireflyIII\Http\Requests\LinkTypeFormRequest; use FireflyIII\Models\LinkType; use FireflyIII\Repositories\LinkType\LinkTypeRepositoryInterface; @@ -51,7 +52,7 @@ class LinkController extends Controller return $next($request); } ); - $this->middleware(IsLimitedUser::class)->except(['index', 'show']); + $this->middleware(IsDemoUser::class)->except(['index', 'show']); } /** diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 17ba35290a..043761a3fd 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace FireflyIII\Http\Controllers\Admin; use FireflyIII\Http\Controllers\Controller; -use FireflyIII\Http\Middleware\IsLimitedUser; +use FireflyIII\Http\Middleware\IsDemoUser; +use FireflyIII\Http\Middleware\IsSandStormUser; use FireflyIII\Http\Requests\UserFormRequest; use FireflyIII\Repositories\User\UserRepositoryInterface; use FireflyIII\User; @@ -52,7 +53,8 @@ class UserController extends Controller return $next($request); } ); - $this->middleware(IsLimitedUser::class)->except(['index', 'show']); + $this->middleware(IsDemoUser::class)->except(['index', 'show']); + $this->middleware(IsSandStormUser::class); } /** diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index db6c7fe744..a5025bde2c 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -27,7 +27,8 @@ use Carbon\Carbon; use DB; use FireflyIII\Exceptions\FireflyException; use FireflyIII\Helpers\Collector\JournalCollectorInterface; -use FireflyIII\Http\Middleware\IsLimitedUser; +use FireflyIII\Http\Middleware\IsDemoUser; +use FireflyIII\Http\Middleware\IsSandStormUser; use FireflyIII\Models\AccountType; use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Bill\BillRepositoryInterface; @@ -55,7 +56,8 @@ class HomeController extends Controller parent::__construct(); app('view')->share('title', 'Firefly III'); app('view')->share('mainTitleIcon', 'fa-fire'); - $this->middleware(IsLimitedUser::class)->except(['dateRange', 'index']); + $this->middleware(IsDemoUser::class)->except(['dateRange', 'index']); + $this->middleware(IsSandStormUser::class)->only('routes'); } /** diff --git a/app/Http/Controllers/Import/ConfigurationController.php b/app/Http/Controllers/Import/ConfigurationController.php index 6a299b333f..a296234261 100644 --- a/app/Http/Controllers/Import/ConfigurationController.php +++ b/app/Http/Controllers/Import/ConfigurationController.php @@ -26,7 +26,7 @@ namespace FireflyIII\Http\Controllers\Import; use FireflyIII\Exceptions\FireflyException; use FireflyIII\Http\Controllers\Controller; -use FireflyIII\Http\Middleware\IsLimitedUser; +use FireflyIII\Http\Middleware\IsDemoUser; use FireflyIII\Import\Configuration\ConfiguratorInterface; use FireflyIII\Models\ImportJob; use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface; @@ -57,7 +57,7 @@ class ConfigurationController extends Controller return $next($request); } ); - $this->middleware(IsLimitedUser::class)->except(['index']); + $this->middleware(IsDemoUser::class)->except(['index']); } /** diff --git a/app/Http/Controllers/Import/IndexController.php b/app/Http/Controllers/Import/IndexController.php index d139196905..26bcb6a38a 100644 --- a/app/Http/Controllers/Import/IndexController.php +++ b/app/Http/Controllers/Import/IndexController.php @@ -26,7 +26,7 @@ namespace FireflyIII\Http\Controllers\Import; use FireflyIII\Exceptions\FireflyException; use FireflyIII\Http\Controllers\Controller; -use FireflyIII\Http\Middleware\IsLimitedUser; +use FireflyIII\Http\Middleware\IsDemoUser; use FireflyIII\Import\Routine\ImportRoutine; use FireflyIII\Import\Routine\RoutineInterface; use FireflyIII\Models\ImportJob; @@ -61,7 +61,7 @@ class IndexController extends Controller } ); - $this->middleware(IsLimitedUser::class)->except(['create','index']); + $this->middleware(IsDemoUser::class)->except(['create','index']); } /** diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index d79bd11f48..dd122e1344 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -26,7 +26,8 @@ use Auth; use FireflyIII\Events\UserChangedEmail; use FireflyIII\Exceptions\FireflyException; use FireflyIII\Exceptions\ValidationException; -use FireflyIII\Http\Middleware\IsLimitedUser; +use FireflyIII\Http\Middleware\IsDemoUser; +use FireflyIII\Http\Middleware\IsSandStormUser; use FireflyIII\Http\Requests\DeleteAccountFormRequest; use FireflyIII\Http\Requests\EmailFormRequest; use FireflyIII\Http\Requests\ProfileFormRequest; @@ -62,7 +63,8 @@ class ProfileController extends Controller return $next($request); } ); - $this->middleware(IsLimitedUser::class)->except(['confirmEmailChange', 'index', 'undoEmailChange']); + $this->middleware(IsDemoUser::class)->except(['index']); + $this->middleware(IsSandStormUser::class)->except('index'); } /** diff --git a/app/Http/Middleware/IsLimitedUser.php b/app/Http/Middleware/IsDemoUser.php similarity index 87% rename from app/Http/Middleware/IsLimitedUser.php rename to app/Http/Middleware/IsDemoUser.php index 3eaf5a1513..2069796235 100644 --- a/app/Http/Middleware/IsLimitedUser.php +++ b/app/Http/Middleware/IsDemoUser.php @@ -1,6 +1,6 @@ . + */ +declare(strict_types=1); + +namespace FireflyIII\Http\Middleware; + +use Closure; +use FireflyIII\User; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; +use Session; + +/** + * Class IsSandStormUser. + */ +class IsSandStormUser +{ + /** + * Handle an incoming request. May not be a limited user (ie. Sandstorm env. or demo user). + * + * @param \Illuminate\Http\Request $request + * @param \Closure $next + * @param string|null $guard + * + * @return mixed + */ + public function handle(Request $request, Closure $next, $guard = null) + { + if (Auth::guard($guard)->guest()) { + if ($request->ajax()) { + return response('Unauthorized.', 401); + } + + return redirect()->guest('login'); + } + + if (1 === intval(getenv('SANDSTORM'))) { + Session::flash('warning', strval(trans('firefly.sandstorm_not_available'))); + + return redirect(route('index')); + } + + return $next($request); + } +} diff --git a/app/Import/FileProcessor/CsvProcessor.php b/app/Import/FileProcessor/CsvProcessor.php index dbf11a7e02..f08f1a1c41 100644 --- a/app/Import/FileProcessor/CsvProcessor.php +++ b/app/Import/FileProcessor/CsvProcessor.php @@ -308,7 +308,7 @@ class CsvProcessor implements FileProcessorInterface private function specifics(array $row): array { $config = $this->job->configuration; - $names = array_keys($config['specifics']); + $names = array_keys($config['specifics'] ?? []); foreach ($names as $name) { if (!in_array($name, $this->validSpecifics)) { throw new FireflyException(sprintf('"%s" is not a valid class name', $name)); diff --git a/app/Support/Import/Configuration/File/Initial.php b/app/Support/Import/Configuration/File/Initial.php index d41277d84c..35d4acccbb 100644 --- a/app/Support/Import/Configuration/File/Initial.php +++ b/app/Support/Import/Configuration/File/Initial.php @@ -55,9 +55,11 @@ class Initial implements ConfigurationInterface // update job with default date format: $config = $this->job->configuration; - $config['date-format'] = 'Ymd'; - $this->job->configuration = $config; - $this->job->save(); + if (!isset($config['date-format'])) { + $config['date-format'] = 'Ymd'; + $this->job->configuration = $config; + $this->job->save(); + } $specifics = []; // collect specifics. diff --git a/public/js/ff/import/status.js b/public/js/ff/import/status.js index cb37027513..0f65e71b60 100644 --- a/public/js/ff/import/status.js +++ b/public/js/ff/import/status.js @@ -163,7 +163,7 @@ function jobIsStalled(data) { function startJob() { // disable the button, add loading thing. $('.start-job').prop('disabled', true).text('...'); - $.post(jobStartUri).fail(reportOnSubmitError); + $.post(jobStartUri, {_token: token}).fail(reportOnSubmitError); // check status, every 500 ms. timeOutId = setTimeout(checkJobStatus, startInterval); diff --git a/resources/lang/en_US/auth.php b/resources/lang/en_US/auth.php index 8e8ec2e2ab..6b133fe2a9 100644 --- a/resources/lang/en_US/auth.php +++ b/resources/lang/en_US/auth.php @@ -20,6 +20,7 @@ */ declare(strict_types=1); + return [ /* diff --git a/resources/lang/en_US/breadcrumbs.php b/resources/lang/en_US/breadcrumbs.php index 51047f50d3..78b34ccdaa 100644 --- a/resources/lang/en_US/breadcrumbs.php +++ b/resources/lang/en_US/breadcrumbs.php @@ -20,6 +20,7 @@ */ declare(strict_types=1); + return [ 'home' => 'Home', 'edit_currency' => 'Edit currency ":name"', @@ -29,7 +30,7 @@ return [ 'preferences' => 'Preferences', 'profile' => 'Profile', 'changePassword' => 'Change your password', - 'change_email' => 'Change your email address', + 'change_email' => 'Change your email address', 'bills' => 'Bills', 'newBill' => 'New bill', 'edit_bill' => 'Edit bill ":name"', diff --git a/resources/lang/en_US/config.php b/resources/lang/en_US/config.php index d7ebbb32ed..74180288e2 100644 --- a/resources/lang/en_US/config.php +++ b/resources/lang/en_US/config.php @@ -20,6 +20,7 @@ */ declare(strict_types=1); + return [ 'locale' => 'en, English, en_US, en_US.utf8, en_US.UTF-8', 'month' => '%B %Y', diff --git a/resources/lang/en_US/demo.php b/resources/lang/en_US/demo.php index b810105350..55b8bdf9be 100644 --- a/resources/lang/en_US/demo.php +++ b/resources/lang/en_US/demo.php @@ -20,6 +20,7 @@ */ declare(strict_types=1); + return [ 'no_demo_text' => 'Sorry, there is no extra demo-explanation text for this page.', 'see_help_icon' => 'However, the -icon in the top right corner may tell you more.', diff --git a/resources/lang/en_US/form.php b/resources/lang/en_US/form.php index 84f57f87fc..b614d014fd 100644 --- a/resources/lang/en_US/form.php +++ b/resources/lang/en_US/form.php @@ -20,6 +20,7 @@ */ declare(strict_types=1); + return [ // new user: @@ -200,7 +201,7 @@ return [ 'app_secret' => 'App secret', 'public_key' => 'Public key', 'country_code' => 'Country code', - 'provider_code' => 'Bank or data-provider', + 'provider_code' => 'Bank or data-provider', 'due_date' => 'Due date', diff --git a/resources/lang/en_US/import.php b/resources/lang/en_US/import.php index 6fffe9a597..61c4516fac 100644 --- a/resources/lang/en_US/import.php +++ b/resources/lang/en_US/import.php @@ -36,6 +36,7 @@ return [ 'status_ready_start' => 'Start the import', 'status_ready_share' => 'Please consider downloading your configuration and sharing it at the import configuration center. This will allow other users of Firefly III to import their files more easily.', 'status_job_running' => 'The import is running.. Please wait..', + 'status_job_finished' => 'The import has finished!', 'status_running_title' => 'The import is running', 'status_running_placeholder' => 'Please hold for an update...', 'status_finished_title' => 'Import routine finished', diff --git a/resources/lang/en_US/intro.php b/resources/lang/en_US/intro.php index cd62465768..42477bdf5f 100644 --- a/resources/lang/en_US/intro.php +++ b/resources/lang/en_US/intro.php @@ -20,6 +20,7 @@ */ declare(strict_types=1); + return [ // index 'index_intro' => 'Welcome to the index page of Firefly III. Please take the time to walk through this intro to get a feeling of how Firefly III works.', diff --git a/resources/lang/en_US/list.php b/resources/lang/en_US/list.php index 2e5764d54c..51df8d2814 100644 --- a/resources/lang/en_US/list.php +++ b/resources/lang/en_US/list.php @@ -20,6 +20,7 @@ */ declare(strict_types=1); + return [ 'buttons' => 'Buttons', 'icon' => 'Icon', diff --git a/resources/lang/en_US/pagination.php b/resources/lang/en_US/pagination.php index e288c8f86b..7f67f61536 100644 --- a/resources/lang/en_US/pagination.php +++ b/resources/lang/en_US/pagination.php @@ -20,6 +20,7 @@ */ declare(strict_types=1); + return [ 'previous' => '« Previous', diff --git a/resources/lang/en_US/passwords.php b/resources/lang/en_US/passwords.php index 82b532d89b..fe0c40ab0b 100644 --- a/resources/lang/en_US/passwords.php +++ b/resources/lang/en_US/passwords.php @@ -20,6 +20,7 @@ */ declare(strict_types=1); + return [ 'password' => 'Passwords must be at least six characters and match the confirmation.', 'user' => 'We can\'t find a user with that e-mail address.', diff --git a/resources/lang/en_US/validation.php b/resources/lang/en_US/validation.php index 7651617f26..ba0fd8bfc7 100644 --- a/resources/lang/en_US/validation.php +++ b/resources/lang/en_US/validation.php @@ -20,6 +20,7 @@ */ declare(strict_types=1); + return [ 'iban' => 'This is not a valid IBAN.', 'unique_account_number_for_user' => 'It looks like this account number is already in use.', diff --git a/resources/views/partials/menu-sidebar.twig b/resources/views/partials/menu-sidebar.twig index 904c4bbc92..b73ae95836 100644 --- a/resources/views/partials/menu-sidebar.twig +++ b/resources/views/partials/menu-sidebar.twig @@ -162,7 +162,7 @@ {{ 'currencies'|_ }} - {% if Auth.user.hasRole('owner') and not SANDSTORM %} + {% if Auth.user.hasRole('owner') %}
  • {{ 'administration'|_ }}