From 201db34936eafd896584115b242ed85339ac8242 Mon Sep 17 00:00:00 2001 From: James Cole Date: Wed, 22 Feb 2017 21:27:39 +0100 Subject: [PATCH] Update various sandstorm files. [skip ci] --- .sandstorm/sandstorm-files.list | 112 ++++++++++++++++++ .sandstorm/sandstorm-pkgdef.capnp | 4 +- app/Http/Middleware/Sandstorm.php | 51 +++++++- .../Controllers/BudgetControllerTest.php | 2 + 4 files changed, 166 insertions(+), 3 deletions(-) diff --git a/.sandstorm/sandstorm-files.list b/.sandstorm/sandstorm-files.list index 91b1256d53..0c097bee32 100644 --- a/.sandstorm/sandstorm-files.list +++ b/.sandstorm/sandstorm-files.list @@ -232,27 +232,52 @@ opt/app/app/Console/Kernel.php opt/app/app/Exceptions/Handler.php opt/app/app/Generator/Chart/Basic/ChartJsGenerator.php opt/app/app/Generator/Chart/Basic/GeneratorInterface.php +opt/app/app/Generator/Report/ReportGeneratorFactory.php +opt/app/app/Generator/Report/ReportGeneratorInterface.php +opt/app/app/Generator/Report/Standard/MonthReportGenerator.php opt/app/app/Helpers/Attachments/AttachmentHelper.php opt/app/app/Helpers/Attachments/AttachmentHelperInterface.php +opt/app/app/Helpers/Collection/Balance.php +opt/app/app/Helpers/Collection/BalanceEntry.php +opt/app/app/Helpers/Collection/BalanceHeader.php +opt/app/app/Helpers/Collection/BalanceLine.php +opt/app/app/Helpers/Collection/Bill.php opt/app/app/Helpers/Collector/JournalCollector.php opt/app/app/Helpers/Collector/JournalCollectorInterface.php opt/app/app/Helpers/FiscalHelper.php opt/app/app/Helpers/FiscalHelperInterface.php +opt/app/app/Helpers/Report/BalanceReportHelper.php +opt/app/app/Helpers/Report/BalanceReportHelperInterface.php +opt/app/app/Helpers/Report/BudgetReportHelper.php +opt/app/app/Helpers/Report/BudgetReportHelperInterface.php opt/app/app/Helpers/Report/ReportHelper.php opt/app/app/Helpers/Report/ReportHelperInterface.php +opt/app/app/Http/Controllers/AccountController.php opt/app/app/Http/Controllers/Auth/LoginController.php +opt/app/app/Http/Controllers/BillController.php opt/app/app/Http/Controllers/BudgetController.php +opt/app/app/Http/Controllers/CategoryController.php opt/app/app/Http/Controllers/Chart/AccountController.php opt/app/app/Http/Controllers/Chart/BudgetController.php opt/app/app/Http/Controllers/Chart/CategoryController.php opt/app/app/Http/Controllers/Controller.php opt/app/app/Http/Controllers/HomeController.php +opt/app/app/Http/Controllers/ImportController.php opt/app/app/Http/Controllers/JavascriptController.php opt/app/app/Http/Controllers/JsonController.php opt/app/app/Http/Controllers/NewUserController.php +opt/app/app/Http/Controllers/PiggyBankController.php opt/app/app/Http/Controllers/ProfileController.php +opt/app/app/Http/Controllers/Report/AccountController.php +opt/app/app/Http/Controllers/Report/BalanceController.php +opt/app/app/Http/Controllers/Report/BudgetController.php +opt/app/app/Http/Controllers/Report/CategoryController.php +opt/app/app/Http/Controllers/Report/OperationsController.php opt/app/app/Http/Controllers/ReportController.php +opt/app/app/Http/Controllers/RuleController.php +opt/app/app/Http/Controllers/TagController.php opt/app/app/Http/Controllers/Transaction/SingleController.php +opt/app/app/Http/Controllers/TransactionController.php opt/app/app/Http/Kernel.php opt/app/app/Http/Middleware/Authenticate.php opt/app/app/Http/Middleware/AuthenticateTwoFactor.php @@ -263,10 +288,16 @@ opt/app/app/Http/Middleware/RedirectIfAuthenticated.php opt/app/app/Http/Middleware/Sandstorm.php opt/app/app/Http/Middleware/StartFireflySession.php opt/app/app/Http/Middleware/VerifyCsrfToken.php +opt/app/app/Http/Requests/BudgetFormRequest.php +opt/app/app/Http/Requests/BudgetIncomeRequest.php +opt/app/app/Http/Requests/CategoryFormRequest.php opt/app/app/Http/Requests/JournalFormRequest.php opt/app/app/Http/Requests/NewUserFormRequest.php +opt/app/app/Http/Requests/PiggyBankFormRequest.php opt/app/app/Http/Requests/ProfileFormRequest.php +opt/app/app/Http/Requests/ReportFormRequest.php opt/app/app/Http/Requests/Request.php +opt/app/app/Http/Requests/TagFormRequest.php opt/app/app/Http/breadcrumbs.php opt/app/app/Jobs/Job.php opt/app/app/Jobs/MailError.php @@ -279,9 +310,15 @@ opt/app/app/Models/Budget.php opt/app/app/Models/BudgetLimit.php opt/app/app/Models/Category.php opt/app/app/Models/Configuration.php +opt/app/app/Models/Note.php opt/app/app/Models/PiggyBank.php +opt/app/app/Models/PiggyBankRepetition.php opt/app/app/Models/Preference.php opt/app/app/Models/Role.php +opt/app/app/Models/Rule.php +opt/app/app/Models/RuleAction.php +opt/app/app/Models/RuleGroup.php +opt/app/app/Models/RuleTrigger.php opt/app/app/Models/Tag.php opt/app/app/Models/Transaction.php opt/app/app/Models/TransactionCurrency.php @@ -317,14 +354,24 @@ opt/app/app/Repositories/Budget/BudgetRepository.php opt/app/app/Repositories/Budget/BudgetRepositoryInterface.php opt/app/app/Repositories/Category/CategoryRepository.php opt/app/app/Repositories/Category/CategoryRepositoryInterface.php +opt/app/app/Repositories/Currency/CurrencyRepository.php +opt/app/app/Repositories/Currency/CurrencyRepositoryInterface.php opt/app/app/Repositories/Journal/JournalRepository.php opt/app/app/Repositories/Journal/JournalRepositoryInterface.php opt/app/app/Repositories/PiggyBank/PiggyBankRepository.php opt/app/app/Repositories/PiggyBank/PiggyBankRepositoryInterface.php +opt/app/app/Repositories/Rule/RuleRepository.php +opt/app/app/Repositories/Rule/RuleRepositoryInterface.php +opt/app/app/Repositories/RuleGroup/RuleGroupRepository.php +opt/app/app/Repositories/RuleGroup/RuleGroupRepositoryInterface.php opt/app/app/Repositories/Tag/TagRepository.php opt/app/app/Repositories/Tag/TagRepositoryInterface.php +opt/app/app/Repositories/User/UserRepository.php opt/app/app/Repositories/User/UserRepositoryInterface.php opt/app/app/Support/Amount.php +opt/app/app/Support/Binder/AccountList.php +opt/app/app/Support/Binder/BinderInterface.php +opt/app/app/Support/Binder/Date.php opt/app/app/Support/CacheProperties.php opt/app/app/Support/Domain.php opt/app/app/Support/ExpandedForm.php @@ -386,25 +433,40 @@ opt/app/database/seeds/PermissionSeeder.php opt/app/database/seeds/TransactionCurrencySeeder.php opt/app/database/seeds/TransactionTypeSeeder.php opt/app/public/css/bootstrap-multiselect.css +opt/app/public/css/bootstrap-sortable.css opt/app/public/css/bootstrap-tagsinput.css opt/app/public/css/bootstrap-tour.min.css opt/app/public/css/daterangepicker.css opt/app/public/css/firefly.css opt/app/public/css/jquery-ui/jquery-ui.structure.min.css opt/app/public/css/jquery-ui/jquery-ui.theme.min.css +opt/app/public/favicon-16x16.png +opt/app/public/favicon-32x32.png opt/app/public/index.php +opt/app/public/js/ff/accounts/edit.js +opt/app/public/js/ff/bills/create.js opt/app/public/js/ff/budgets/index.js +opt/app/public/js/ff/categories/index.js opt/app/public/js/ff/charts.defaults.js opt/app/public/js/ff/charts.js opt/app/public/js/ff/firefly.js opt/app/public/js/ff/guest.js opt/app/public/js/ff/help.js opt/app/public/js/ff/index.js +opt/app/public/js/ff/piggy-banks/create.js +opt/app/public/js/ff/piggy-banks/index.js +opt/app/public/js/ff/reports/default/all.js +opt/app/public/js/ff/reports/default/month.js opt/app/public/js/ff/reports/index.js +opt/app/public/js/ff/rules/index.js +opt/app/public/js/ff/tags/create-edit.js +opt/app/public/js/ff/tags/index.js +opt/app/public/js/ff/transactions/list.js opt/app/public/js/ff/transactions/single/create.js opt/app/public/js/lib/Chart.bundle.min.js opt/app/public/js/lib/accounting.min.js opt/app/public/js/lib/bootstrap-multiselect.js +opt/app/public/js/lib/bootstrap-sortable.js opt/app/public/js/lib/bootstrap-tagsinput.min.js opt/app/public/js/lib/bootstrap-tour.min.js opt/app/public/js/lib/bootstrap3-typeahead.min.js @@ -417,6 +479,7 @@ opt/app/public/lib/adminlte/css/AdminLTE.min.css opt/app/public/lib/adminlte/css/skins/skin-blue-light.min.css opt/app/public/lib/adminlte/js/app.min.js opt/app/public/lib/bootstrap/css/bootstrap.min.css +opt/app/public/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 opt/app/public/lib/bootstrap/js/bootstrap.min.js opt/app/public/lib/font-awesome/css/font-awesome.min.css opt/app/public/lib/font-awesome/fonts/fontawesome-webfont.woff2 @@ -425,9 +488,19 @@ opt/app/resources/lang/en_US/config.php opt/app/resources/lang/en_US/firefly.php opt/app/resources/lang/en_US/form.php opt/app/resources/lang/en_US/help.php +opt/app/resources/lang/en_US/list.php opt/app/resources/lang/en_US/validation.php +opt/app/resources/views/accounts/delete.twig +opt/app/resources/views/accounts/edit.twig +opt/app/resources/views/accounts/index.twig opt/app/resources/views/auth/login.twig +opt/app/resources/views/bills/create.twig +opt/app/resources/views/bills/index.twig +opt/app/resources/views/budgets/create.twig +opt/app/resources/views/budgets/income.twig opt/app/resources/views/budgets/index.twig +opt/app/resources/views/categories/create.twig +opt/app/resources/views/categories/index.twig opt/app/resources/views/emails/error-html.twig opt/app/resources/views/emails/error-text.twig opt/app/resources/views/emails/footer-html.twig @@ -437,18 +510,31 @@ opt/app/resources/views/emails/header-text.twig opt/app/resources/views/error.twig opt/app/resources/views/form/amount.twig opt/app/resources/views/form/balance.twig +opt/app/resources/views/form/checkbox.twig opt/app/resources/views/form/date.twig opt/app/resources/views/form/feedback.twig +opt/app/resources/views/form/file.twig opt/app/resources/views/form/help.twig +opt/app/resources/views/form/integer.twig +opt/app/resources/views/form/location.twig +opt/app/resources/views/form/multiRadio.twig opt/app/resources/views/form/options.twig opt/app/resources/views/form/select.twig +opt/app/resources/views/form/tags.twig opt/app/resources/views/form/text.twig +opt/app/resources/views/form/textarea.twig +opt/app/resources/views/import/index.twig opt/app/resources/views/index.twig opt/app/resources/views/javascript/variables.twig opt/app/resources/views/json/tour.twig opt/app/resources/views/layout/default.twig opt/app/resources/views/layout/guest.twig +opt/app/resources/views/list/accounts.twig +opt/app/resources/views/list/bills.twig +opt/app/resources/views/list/categories.twig +opt/app/resources/views/list/journals-tasker.twig opt/app/resources/views/list/journals-tiny-tasker.twig +opt/app/resources/views/list/piggy-banks.twig opt/app/resources/views/new-user/index.twig opt/app/resources/views/partials/boxes.twig opt/app/resources/views/partials/control-bar.twig @@ -456,11 +542,25 @@ opt/app/resources/views/partials/favicons.twig opt/app/resources/views/partials/flashes.twig opt/app/resources/views/partials/menu-sidebar.twig opt/app/resources/views/partials/page-header.twig +opt/app/resources/views/piggy-banks/create.twig +opt/app/resources/views/piggy-banks/index.twig opt/app/resources/views/profile/change-password.twig opt/app/resources/views/profile/delete-account.twig opt/app/resources/views/profile/index.twig +opt/app/resources/views/reports/default/month.twig opt/app/resources/views/reports/index.twig opt/app/resources/views/reports/options/no-options.twig +opt/app/resources/views/reports/partials/accounts.twig +opt/app/resources/views/reports/partials/balance.twig +opt/app/resources/views/reports/partials/bills.twig +opt/app/resources/views/reports/partials/budgets.twig +opt/app/resources/views/reports/partials/categories.twig +opt/app/resources/views/reports/partials/income-expenses.twig +opt/app/resources/views/reports/partials/operations.twig +opt/app/resources/views/rules/index.twig +opt/app/resources/views/tags/create.twig +opt/app/resources/views/tags/index.twig +opt/app/resources/views/transactions/index.twig opt/app/resources/views/transactions/single/create.twig opt/app/routes/api.php opt/app/routes/console.php @@ -612,6 +712,7 @@ opt/app/vendor/laravel/framework/src/Illuminate/Contracts/Http/Kernel.php opt/app/vendor/laravel/framework/src/Illuminate/Contracts/Logging/Log.php opt/app/vendor/laravel/framework/src/Illuminate/Contracts/Mail/MailQueue.php opt/app/vendor/laravel/framework/src/Illuminate/Contracts/Mail/Mailer.php +opt/app/vendor/laravel/framework/src/Illuminate/Contracts/Pagination/LengthAwarePaginator.php opt/app/vendor/laravel/framework/src/Illuminate/Contracts/Pagination/Paginator.php opt/app/vendor/laravel/framework/src/Illuminate/Contracts/Pipeline/Pipeline.php opt/app/vendor/laravel/framework/src/Illuminate/Contracts/Queue/Factory.php @@ -682,6 +783,8 @@ opt/app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Conc opt/app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasMany.php opt/app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasManyThrough.php opt/app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasOneOrMany.php +opt/app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphMany.php +opt/app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphOneOrMany.php opt/app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Relation.php opt/app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Scope.php opt/app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/SoftDeletes.php @@ -808,8 +911,11 @@ opt/app/vendor/laravel/framework/src/Illuminate/Notifications/Notifiable.php opt/app/vendor/laravel/framework/src/Illuminate/Notifications/NotificationServiceProvider.php opt/app/vendor/laravel/framework/src/Illuminate/Notifications/RoutesNotifications.php opt/app/vendor/laravel/framework/src/Illuminate/Pagination/AbstractPaginator.php +opt/app/vendor/laravel/framework/src/Illuminate/Pagination/LengthAwarePaginator.php opt/app/vendor/laravel/framework/src/Illuminate/Pagination/PaginationServiceProvider.php opt/app/vendor/laravel/framework/src/Illuminate/Pagination/Paginator.php +opt/app/vendor/laravel/framework/src/Illuminate/Pagination/UrlWindow.php +opt/app/vendor/laravel/framework/src/Illuminate/Pagination/resources/views/default.blade.php opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/PipelineServiceProvider.php opt/app/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php @@ -884,12 +990,14 @@ opt/app/vendor/laravel/framework/src/Illuminate/Support/Facades/App.php opt/app/vendor/laravel/framework/src/Illuminate/Support/Facades/Auth.php opt/app/vendor/laravel/framework/src/Illuminate/Support/Facades/Cache.php opt/app/vendor/laravel/framework/src/Illuminate/Support/Facades/Config.php +opt/app/vendor/laravel/framework/src/Illuminate/Support/Facades/Cookie.php opt/app/vendor/laravel/framework/src/Illuminate/Support/Facades/Crypt.php opt/app/vendor/laravel/framework/src/Illuminate/Support/Facades/DB.php opt/app/vendor/laravel/framework/src/Illuminate/Support/Facades/Event.php opt/app/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php opt/app/vendor/laravel/framework/src/Illuminate/Support/Facades/Gate.php opt/app/vendor/laravel/framework/src/Illuminate/Support/Facades/Input.php +opt/app/vendor/laravel/framework/src/Illuminate/Support/Facades/Lang.php opt/app/vendor/laravel/framework/src/Illuminate/Support/Facades/Log.php opt/app/vendor/laravel/framework/src/Illuminate/Support/Facades/Mail.php opt/app/vendor/laravel/framework/src/Illuminate/Support/Facades/Request.php @@ -914,6 +1022,7 @@ opt/app/vendor/laravel/framework/src/Illuminate/Support/ViewErrorBag.php opt/app/vendor/laravel/framework/src/Illuminate/Support/helpers.php opt/app/vendor/laravel/framework/src/Illuminate/Translation/FileLoader.php opt/app/vendor/laravel/framework/src/Illuminate/Translation/LoaderInterface.php +opt/app/vendor/laravel/framework/src/Illuminate/Translation/MessageSelector.php opt/app/vendor/laravel/framework/src/Illuminate/Translation/TranslationServiceProvider.php opt/app/vendor/laravel/framework/src/Illuminate/Translation/Translator.php opt/app/vendor/laravel/framework/src/Illuminate/Validation/Concerns/FormatsMessages.php @@ -1214,14 +1323,17 @@ opt/app/vendor/twig/twig/lib/Twig/Node/Expression.php opt/app/vendor/twig/twig/lib/Twig/Node/Expression/Array.php opt/app/vendor/twig/twig/lib/Twig/Node/Expression/AssignName.php opt/app/vendor/twig/twig/lib/Twig/Node/Expression/Binary.php +opt/app/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Add.php opt/app/vendor/twig/twig/lib/Twig/Node/Expression/Binary/And.php opt/app/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Concat.php opt/app/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Equal.php opt/app/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Greater.php +opt/app/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Less.php opt/app/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Mod.php opt/app/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Mul.php opt/app/vendor/twig/twig/lib/Twig/Node/Expression/Binary/NotEqual.php opt/app/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Or.php +opt/app/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Sub.php opt/app/vendor/twig/twig/lib/Twig/Node/Expression/Call.php opt/app/vendor/twig/twig/lib/Twig/Node/Expression/Conditional.php opt/app/vendor/twig/twig/lib/Twig/Node/Expression/Constant.php diff --git a/.sandstorm/sandstorm-pkgdef.capnp b/.sandstorm/sandstorm-pkgdef.capnp index c0493e5fb6..30f3d425e1 100644 --- a/.sandstorm/sandstorm-pkgdef.capnp +++ b/.sandstorm/sandstorm-pkgdef.capnp @@ -16,7 +16,7 @@ const pkgdef :Spk.PackageDefinition = ( manifest = ( appTitle = (defaultText = "Firefly III"), appVersion = 1, - appMarketingVersion = (defaultText = "3.4.3"), + appMarketingVersion = (defaultText = "3.4.6"), actions = [ # Define your "new document" handlers here. ( nounPhrase = (defaultText = "administration"), @@ -97,7 +97,7 @@ const pkgdef :Spk.PackageDefinition = ( # `spk dev` will write a list of all the files your app uses to this file. # You should review it later, before shipping your app. - alwaysInclude = [], + alwaysInclude = ["app","bootstrap","config","database","public","resources","routes"], # Fill this list with more names of files or directories that should be # included in your package, even if not listed in sandstorm-files.list. # Use this to force-include stuff that you know you need but which may diff --git a/app/Http/Middleware/Sandstorm.php b/app/Http/Middleware/Sandstorm.php index 92225ceef5..b995bb0e51 100644 --- a/app/Http/Middleware/Sandstorm.php +++ b/app/Http/Middleware/Sandstorm.php @@ -13,6 +13,8 @@ namespace FireflyIII\Http\Middleware; use Auth; use Closure; +use FireflyIII\Exceptions\FireflyException; +use FireflyIII\Repositories\User\UserRepositoryInterface; use FireflyIII\User; use Illuminate\Http\Request; use View; @@ -45,7 +47,54 @@ class Sandstorm // we're in sandstorm! is user a guest? if (Auth::guard($guard)->guest()) { - $userId = strval($request->header('X-Sandstorm-User-Id')); + /** @var UserRepositoryInterface $repository */ + $repository = app(UserRepositoryInterface::class); + $userId = strval($request->header('X-Sandstorm-User-Id')); + $count = $repository->count(); + + // if there already is one user in this instance, we assume this is + // the "main" user. Firefly's nature does not allow other users to + // access the same data so we have no choice but to simply login + // the new user to the same account and just forget about Bob and Alice + // and any other differences there may be between these users. + if ($count === 1 && strlen($userId) > 0) { + // login as first user user. + $user = User::first(); + Auth::guard($guard)->login($user); + View::share('SANDSTORM_ANON', false); + return $next($request); + } + + if ($count === 1 && strlen($userId) === 0) { + // login but indicate anonymous + $user = User::first(); + Auth::guard($guard)->login($user); + View::share('SANDSTORM_ANON', true); + return $next($request); + } + + if ($count === 0 && strlen($userId) > 0) { + // create new user. + $email = $userId . '@firefly'; + $user = User::create( + [ + 'email' => $email, + 'password' => str_random(16), + ] + ); + Auth::guard($guard)->login($user); + return $next($request); + } + + if ($count === 0 && strlen($userId) === 0) { + throw new FireflyException('The first visit to a new Firefly III administration cannot be by a guest user.'); + } + + if ($count > 1) { + die('Cannot happen.'); + } + exit; + if (strlen($userId) > 0) { // find user? $email = $userId . '@firefly'; diff --git a/tests/Feature/Controllers/BudgetControllerTest.php b/tests/Feature/Controllers/BudgetControllerTest.php index 47e03cc0a0..399f19eccc 100644 --- a/tests/Feature/Controllers/BudgetControllerTest.php +++ b/tests/Feature/Controllers/BudgetControllerTest.php @@ -88,6 +88,7 @@ class BudgetControllerTest extends TestCase /** * @covers \FireflyIII\Http\Controllers\BudgetController::index + * @covers \FireflyIII\Http\Controllers\BudgetController::collectBudgetInformation * @covers \FireflyIII\Http\Controllers\BudgetController::__construct * @dataProvider dateRangeProvider * @@ -153,6 +154,7 @@ class BudgetControllerTest extends TestCase /** * @covers \FireflyIII\Http\Controllers\BudgetController::show + * @covers \FireflyIII\Http\Controllers\BudgetController::getLimits * @dataProvider dateRangeProvider * * @param string $range