Compare commits

..

4 Commits

Author SHA1 Message Date
github-actions
65c5249815 Auto commit for release 'develop' on 2024-02-19 2024-02-19 01:30:23 +01:00
James Cole
b1afaea1aa Various updates. 2024-02-18 11:35:08 +01:00
James Cole
997dc3814b Add host header validation 2024-02-17 08:18:49 +01:00
James Cole
b37b5b86d4 Fix https://github.com/firefly-iii/firefly-iii/issues/8544 2024-02-16 20:42:04 +01:00
25 changed files with 207 additions and 133 deletions

View File

@@ -1,6 +1,6 @@
# You can leave this on "local". If you change it to production most console commands will ask for extra confirmation.
# Never set it to "testing".
APP_ENV=local
APP_ENV=production
# Set to true if you want to see debug information in error screens.
APP_DEBUG=false
@@ -332,15 +332,7 @@ DEMO_PASSWORD=
FIREFLY_III_LAYOUT=v1
#
# If you have trouble configuring your Firefly III installation, DON'T BOTHER setting this variable.
# It won't work. It doesn't do ANYTHING. Don't believe the lies you read online. I'm not joking.
# This configuration value WILL NOT HELP.
#
# Notable exception to this rule is Synology, which, according to some users, will use APP_URL to rewrite stuff.
#
# This variable is ONLY used in some of the emails Firefly III sends around. Nowhere else.
# So when configuring anything WEB related this variable doesn't do anything. Nothing
#
# If you're stuck I understand you get desperate but look SOMEWHERE ELSE.
# Please make sure this URL matches the external URL of your Firefly III installation.
# It is used to validate specific requests and to generate URLs in emails.
#
APP_URL=http://localhost

View File

@@ -72,6 +72,16 @@ class UpgradeFireflyInstructions extends Command
}
}
// validate some settings.
if('' === $text && 'local' === (string)config('app.env')) {
$text = 'Please set APP_ENV=production for a safer environment.';
}
$prefix = 'v';
if(str_starts_with($version, 'develop')) {
$prefix = '';
}
$this->newLine();
$this->showLogo();
$this->newLine();
@@ -79,7 +89,7 @@ class UpgradeFireflyInstructions extends Command
$this->boxed('');
if ('' === $text) {
$this->boxed(sprintf('Thank you for updating to Firefly III, v%s', $version));
$this->boxed(sprintf('Thank you for updating to Firefly III, %s%s', $prefix, $version));
$this->boxedInfo('There are no extra upgrade instructions.');
$this->boxed('Firefly III should be ready for use.');
$this->boxed('');
@@ -88,7 +98,7 @@ class UpgradeFireflyInstructions extends Command
return;
}
$this->boxed(sprintf('Thank you for updating to Firefly III, v%s!', $version));
$this->boxed(sprintf('Thank you for updating to Firefly III, %s%s!', $prefix, $version));
$this->boxedInfo($text);
$this->boxed('');
$this->showLine();
@@ -181,13 +191,24 @@ class UpgradeFireflyInstructions extends Command
$text = (string)$config[$compare];
}
}
// validate some settings.
if('' === $text && 'local' === (string)config('app.env')) {
$text = 'Please set APP_ENV=production for a safer environment.';
}
$prefix = 'v';
if(str_starts_with($version, 'develop')) {
$prefix = '';
}
$this->newLine();
$this->showLogo();
$this->newLine();
$this->showLine();
$this->boxed('');
if ('' === $text) {
$this->boxed(sprintf('Thank you for installing Firefly III, v%s!', $version));
$this->boxed(sprintf('Thank you for installing Firefly III, %s%s!', $prefix, $version));
$this->boxedInfo('There are no extra installation instructions.');
$this->boxed('Firefly III should be ready for use.');
$this->boxed('');
@@ -196,7 +217,7 @@ class UpgradeFireflyInstructions extends Command
return;
}
$this->boxed(sprintf('Thank you for installing Firefly III, v%s!', $version));
$this->boxed(sprintf('Thank you for installing Firefly III, %s%s!', $prefix, $version));
$this->boxedInfo($text);
$this->boxed('');
$this->showLine();

View File

@@ -68,6 +68,9 @@ class ForgotPasswordController extends Controller
return view('error', compact('message'));
}
// validate host header.
$this->validateHost();
$this->validateEmail($request);
// verify if the user is not a demo user. If so, we give him back an error.
@@ -118,4 +121,19 @@ class ForgotPasswordController extends Controller
return view('auth.passwords.email')->with(compact('allowRegistration', 'pageTitle'));
}
/**
* @throws FireflyException
*/
private function validateHost(): void
{
$configuredHost = parse_url((string)config('app.url'), PHP_URL_HOST);
if(false === $configuredHost || null === $configuredHost) {
throw new FireflyException('Please set a valid and correct Firefly III URL in the APP_URL environment variable.');
}
$host = request()->host();
if($configuredHost !== $host) {
throw new FireflyException('The Host-header does not match the host in the APP_URL environment variable. Please make sure these match. See also: https://bit.ly/FF3-host-header');
}
}
}

View File

@@ -80,6 +80,7 @@ class ResetPasswordController extends Controller
return view('error', compact('message'));
}
$rules = [
'token' => 'required',
'email' => 'required|email',
@@ -90,7 +91,7 @@ class ResetPasswordController extends Controller
// Here we will attempt to reset the user's password. If it is successful we
// will update the password on an actual user model and persist it to the
// database. Otherwise we will parse the error and return the response.
// database. Otherwise, we will parse the error and return the response.
$response = $this->broker()->reset(
$this->credentials($request),
function ($user, $password): void {

View File

@@ -24,7 +24,6 @@ declare(strict_types=1);
namespace FireflyIII\Http\Controllers;
use Carbon\Carbon;
use Exception;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Http\Middleware\IsDemoUser;
use FireflyIII\Models\AccountType;
@@ -178,7 +177,9 @@ class DebugController extends Controller
'db_version' => app('fireflyconfig')->get('db_version', 1)->data,
'php_version' => PHP_VERSION,
'php_os' => PHP_OS,
'uname' => php_uname('m'),
'interface' => \PHP_SAPI,
'bits' => \PHP_INT_SIZE * 8,
'bcscale' => bcscale(),
'display_errors' => ini_get('display_errors'),
'error_reporting' => $this->errorReporting((int)ini_get('error_reporting')),

View File

@@ -78,7 +78,7 @@ class RecurrenceController extends Controller
$weekend = (int) $request->get('weekend');
$repetitionMoment = '';
$skip = (int) $request->get('skip');
$skip = $skip < 1 || $skip > 31 ? 1 : $skip;
$skip = $skip < 0 || $skip > 31 ? 0 : $skip;
$weekend = $weekend < 1 || $weekend > 4 ? 1 : $weekend;
if (false === $start || false === $end || false === $firstDate || false === $endDate) {

View File

@@ -0,0 +1,41 @@
<?php
/*
* TrustHosts.php
* Copyright (c) 2024 james@firefly-iii.org.
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see https://www.gnu.org/licenses/.
*/
declare(strict_types=1);
namespace FireflyIII\Http\Middleware;
use Illuminate\Http\Middleware\TrustHosts as Middleware;
class TrustHosts extends Middleware
{
/**
* Get the host patterns that should be trusted.
*
* @return array<int, null|string>
*/
public function hosts(): array
{
return [
$this->allSubdomainsOfApplicationUrl(),
];
}
}

48
composer.lock generated
View File

@@ -793,16 +793,16 @@
},
{
"name": "doctrine/inflector",
"version": "2.0.9",
"version": "2.0.10",
"source": {
"type": "git",
"url": "https://github.com/doctrine/inflector.git",
"reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65"
"reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/inflector/zipball/2930cd5ef353871c821d5c43ed030d39ac8cfe65",
"reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65",
"url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc",
"reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc",
"shasum": ""
},
"require": {
@@ -864,7 +864,7 @@
],
"support": {
"issues": "https://github.com/doctrine/inflector/issues",
"source": "https://github.com/doctrine/inflector/tree/2.0.9"
"source": "https://github.com/doctrine/inflector/tree/2.0.10"
},
"funding": [
{
@@ -880,7 +880,7 @@
"type": "tidelift"
}
],
"time": "2024-01-15T18:05:13+00:00"
"time": "2024-02-18T20:23:39+00:00"
},
{
"name": "doctrine/lexer",
@@ -8990,16 +8990,16 @@
"packages-dev": [
{
"name": "barryvdh/laravel-debugbar",
"version": "v3.10.4",
"version": "v3.10.5",
"source": {
"type": "git",
"url": "https://github.com/barryvdh/laravel-debugbar.git",
"reference": "09d3dc77d7dc1b063e3728a6029c39ee0fbebf1d"
"reference": "d1a48965f2b25a6cec2eea07d719b568a37c9a88"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/09d3dc77d7dc1b063e3728a6029c39ee0fbebf1d",
"reference": "09d3dc77d7dc1b063e3728a6029c39ee0fbebf1d",
"url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/d1a48965f2b25a6cec2eea07d719b568a37c9a88",
"reference": "d1a48965f2b25a6cec2eea07d719b568a37c9a88",
"shasum": ""
},
"require": {
@@ -9058,7 +9058,7 @@
],
"support": {
"issues": "https://github.com/barryvdh/laravel-debugbar/issues",
"source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.10.4"
"source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.10.5"
},
"funding": [
{
@@ -9070,20 +9070,20 @@
"type": "github"
}
],
"time": "2024-02-14T08:52:12+00:00"
"time": "2024-02-15T10:45:45+00:00"
},
{
"name": "barryvdh/laravel-ide-helper",
"version": "v2.15.0",
"version": "v2.15.1",
"source": {
"type": "git",
"url": "https://github.com/barryvdh/laravel-ide-helper.git",
"reference": "dca3ebe81ea385632651791cb8b3db42153c380c"
"reference": "77831852bb7bc54f287246d32eb91274eaf87f8b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/dca3ebe81ea385632651791cb8b3db42153c380c",
"reference": "dca3ebe81ea385632651791cb8b3db42153c380c",
"url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/77831852bb7bc54f287246d32eb91274eaf87f8b",
"reference": "77831852bb7bc54f287246d32eb91274eaf87f8b",
"shasum": ""
},
"require": {
@@ -9152,7 +9152,7 @@
],
"support": {
"issues": "https://github.com/barryvdh/laravel-ide-helper/issues",
"source": "https://github.com/barryvdh/laravel-ide-helper/tree/v2.15.0"
"source": "https://github.com/barryvdh/laravel-ide-helper/tree/v2.15.1"
},
"funding": [
{
@@ -9164,7 +9164,7 @@
"type": "github"
}
],
"time": "2024-02-14T11:19:26+00:00"
"time": "2024-02-15T14:23:20+00:00"
},
{
"name": "barryvdh/reflection-docblock",
@@ -9651,16 +9651,16 @@
},
{
"name": "maximebf/debugbar",
"version": "v1.20.1",
"version": "v1.20.2",
"source": {
"type": "git",
"url": "https://github.com/maximebf/php-debugbar.git",
"reference": "06ebf922ccedfa4cc43015825697ee8c1fb80f7e"
"reference": "484625c23a4fa4f303617f29fcacd42951c9c01d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/06ebf922ccedfa4cc43015825697ee8c1fb80f7e",
"reference": "06ebf922ccedfa4cc43015825697ee8c1fb80f7e",
"url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/484625c23a4fa4f303617f29fcacd42951c9c01d",
"reference": "484625c23a4fa4f303617f29fcacd42951c9c01d",
"shasum": ""
},
"require": {
@@ -9711,9 +9711,9 @@
],
"support": {
"issues": "https://github.com/maximebf/php-debugbar/issues",
"source": "https://github.com/maximebf/php-debugbar/tree/v1.20.1"
"source": "https://github.com/maximebf/php-debugbar/tree/v1.20.2"
},
"time": "2024-02-13T19:03:14+00:00"
"time": "2024-02-15T10:49:09+00:00"
},
{
"name": "mockery/mockery",

View File

@@ -114,7 +114,7 @@ use TwigBridge\ServiceProvider;
return [
'name' => envNonEmpty('APP_NAME', 'Firefly III'),
'env' => envNonEmpty('APP_ENV', 'local'),
'env' => envNonEmpty('APP_ENV', 'production'),
'debug' => env('APP_DEBUG', false),
'url' => envNonEmpty('APP_URL', 'http://localhost'),
'timezone' => envNonEmpty('TZ', 'UTC'),

12
package-lock.json generated
View File

@@ -746,9 +746,9 @@
}
},
"node_modules/i18next": {
"version": "23.8.2",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-23.8.2.tgz",
"integrity": "sha512-Z84zyEangrlERm0ZugVy4bIt485e/H8VecGUZkZWrH7BDePG6jT73QdL9EA1tRTTVVMpry/MgWIP1FjEn0DRXA==",
"version": "23.9.0",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-23.9.0.tgz",
"integrity": "sha512-f3MUciKqwzNV//mHG6EtdSlC65+nqH/3zK8sOSWqNV6FVu2tmHhF/rFOp9UF8S4m1odojtuipKaKJrP0Loh60g==",
"funding": [
{
"type": "individual",
@@ -1013,9 +1013,9 @@
}
},
"node_modules/sass": {
"version": "1.70.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.70.0.tgz",
"integrity": "sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==",
"version": "1.71.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.71.0.tgz",
"integrity": "sha512-HKKIKf49Vkxlrav3F/w6qRuPcmImGVbIXJ2I3Kg0VMA+3Bav+8yE9G5XmP5lMj6nl4OlqbPftGAscNaNu28b8w==",
"dev": true,
"dependencies": {
"chokidar": ">=3.0.0 <4.0.0",

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
import{f as n}from"./vendor-2609b2c9.js";function e(){return{id:"",name:"",alpine_name:""}}function o(){return{description:[],amount:[],currency_code:[],foreign_amount:[],foreign_currency_code:[],source_account:[],destination_account:[],budget_id:[],category_name:[],piggy_bank_id:[],bill_id:[],tags:[],notes:[],internal_reference:[],external_url:[],latitude:[],longitude:[],zoom_level:[],date:[],interest_date:[],book_date:[],process_date:[],due_date:[],payment_date:[],invoice_date:[]}}function d(){let t=n(new Date,"yyyy-MM-dd HH:mm");return{description:"",amount:"",currency_code:"EUR",foreign_amount:"",foreign_currency_code:"",source_account:e(),destination_account:e(),budget_id:null,category_name:"",piggy_bank_id:null,bill_id:null,tags:[],notes:"",internal_reference:"",external_url:"",hasLocation:!1,latitude:null,longitude:null,zoomLevel:null,date:t,interest_date:"",book_date:"",process_date:"",due_date:"",payment_date:"",invoice_date:"",errors:o()}}export{d as c,o as d};
import{f as n}from"./vendor-a378e2f6.js";function e(){return{id:"",name:"",alpine_name:""}}function o(){return{description:[],amount:[],currency_code:[],foreign_amount:[],foreign_currency_code:[],source_account:[],destination_account:[],budget_id:[],category_name:[],piggy_bank_id:[],bill_id:[],tags:[],notes:[],internal_reference:[],external_url:[],latitude:[],longitude:[],zoom_level:[],date:[],interest_date:[],book_date:[],process_date:[],due_date:[],payment_date:[],invoice_date:[]}}function d(){let t=n(new Date,"yyyy-MM-dd HH:mm");return{description:"",amount:"",currency_code:"EUR",foreign_amount:"",foreign_currency_code:"",source_account:e(),destination_account:e(),budget_id:null,category_name:"",piggy_bank_id:null,bill_id:null,tags:[],notes:"",internal_reference:"",external_url:"",hasLocation:!1,latitude:null,longitude:null,zoomLevel:null,date:t,interest_date:"",book_date:"",process_date:"",due_date:"",payment_date:"",invoice_date:"",errors:o()}}export{d as c,o as d};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
import{a as s}from"./format-money-62afb78b.js";let t=class{list(a){return s.get("/api/v2/subscriptions",{params:a})}paid(a){return s.get("/api/v2/subscriptions/sum/paid",{params:a})}unpaid(a){return s.get("/api/v2/subscriptions/sum/unpaid",{params:a})}};class e{list(a){return s.get("/api/v2/piggy-banks",{params:a})}}export{t as G,e as a};
import{a as s}from"./format-money-671dc543.js";let t=class{list(a){return s.get("/api/v2/subscriptions",{params:a})}paid(a){return s.get("/api/v2/subscriptions/sum/paid",{params:a})}unpaid(a){return s.get("/api/v2/subscriptions/sum/unpaid",{params:a})}};class e{list(a){return s.get("/api/v2/piggy-banks",{params:a})}}export{t as G,e as a};

View File

@@ -1 +1 @@
import{a as t}from"./format-money-62afb78b.js";class n{list(a){return t.get("/api/v2/transactions",{params:a})}listByCount(a){return t.get("/api/v2/transactions-inf",{params:a})}show(a,s){return t.get("/api/v2/transactions/"+a,{params:s})}}export{n as G};
import{a as t}from"./format-money-671dc543.js";class n{list(a){return t.get("/api/v2/transactions",{params:a})}listByCount(a){return t.get("/api/v2/transactions-inf",{params:a})}show(a,s){return t.get("/api/v2/transactions/"+a,{params:s})}}export{n as G};

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
import{c as o}from"./create-empty-split-aae839d5.js";import{f as _}from"./vendor-2609b2c9.js";function l(a,r){let n=[];for(let i in a)if(a.hasOwnProperty(i)){let e=a[i],t=o();t.transaction_journal_id=e.transaction_journal_id,t.transaction_group_id=r,t.bill_id=e.bill_id,t.bill_name=e.bill_name,t.budget_id=e.budget_id,t.budget_name=e.budget_name,t.category_name=e.category_name,t.category_id=e.category_id,t.piggy_bank_id=e.piggy_bank_id,t.piggy_bank_name=e.piggy_bank_name,t.book_date=e.book_date,t.due_date=e.due_date,t.interest_date=e.interest_date,t.invoice_date=e.invoice_date,t.payment_date=e.payment_date,t.process_date=e.process_date,t.external_url=e.external_url,t.internal_reference=e.internal_reference,t.notes=e.notes,t.tags=e.tags,t.amount=parseFloat(e.amount).toFixed(e.currency_decimal_places),t.currency_code=e.currency_code,e.foreign_amount!==null&&(t.forein_currency_code=e.foreign_currency_code,t.foreign_amount=parseFloat(e.foreign_amount).toFixed(e.foreign_currency_decimal_places)),t.date=_(new Date(e.date),"yyyy-MM-dd HH:mm"),t.description=e.description,t.destination_account={id:e.destination_id,name:e.destination_name,type:e.destination_type,alpine_name:e.destination_name},t.source_account={id:e.source_id,name:e.source_name,type:e.source_type,alpine_name:e.source_name},e.latitude!==null&&(t.hasLocation=!0,t.latitude=e.latitude,t.longitude=e.longitude,t.zoomLevel=e.zoom_level),n.push(t)}return n}export{l as p};
import{c as o}from"./create-empty-split-0701ece8.js";import{f as _}from"./vendor-a378e2f6.js";function l(a,r){let n=[];for(let i in a)if(a.hasOwnProperty(i)){let e=a[i],t=o();t.transaction_journal_id=e.transaction_journal_id,t.transaction_group_id=r,t.bill_id=e.bill_id,t.bill_name=e.bill_name,t.budget_id=e.budget_id,t.budget_name=e.budget_name,t.category_name=e.category_name,t.category_id=e.category_id,t.piggy_bank_id=e.piggy_bank_id,t.piggy_bank_name=e.piggy_bank_name,t.book_date=e.book_date,t.due_date=e.due_date,t.interest_date=e.interest_date,t.invoice_date=e.invoice_date,t.payment_date=e.payment_date,t.process_date=e.process_date,t.external_url=e.external_url,t.internal_reference=e.internal_reference,t.notes=e.notes,t.tags=e.tags,t.amount=parseFloat(e.amount).toFixed(e.currency_decimal_places),t.currency_code=e.currency_code,e.foreign_amount!==null&&(t.forein_currency_code=e.foreign_currency_code,t.foreign_amount=parseFloat(e.foreign_amount).toFixed(e.foreign_currency_decimal_places)),t.date=_(new Date(e.date),"yyyy-MM-dd HH:mm"),t.description=e.description,t.destination_account={id:e.destination_id,name:e.destination_name,type:e.destination_type,alpine_name:e.destination_name},t.source_account={id:e.source_id,name:e.source_name,type:e.source_type,alpine_name:e.source_name},e.latitude!==null&&(t.hasLocation=!0,t.latitude=e.latitude,t.longitude=e.longitude,t.zoomLevel=e.zoom_level),n.push(t)}return n}export{l as p};

View File

@@ -1 +1 @@
import{a as p}from"./format-money-62afb78b.js";class u{put(t,a){let r="/api/v2/transactions/"+parseInt(a.id);return p.put(r,t)}}export{u as P};
import{a as p}from"./format-money-671dc543.js";class u{put(t,a){let r="/api/v2/transactions/"+parseInt(a.id);return p.put(r,t)}}export{u as P};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,57 +1,57 @@
{
"_create-empty-split-aae839d5.js": {
"file": "assets/create-empty-split-aae839d5.js",
"_create-empty-split-0701ece8.js": {
"file": "assets/create-empty-split-0701ece8.js",
"imports": [
"_vendor-2609b2c9.js"
"_vendor-a378e2f6.js"
],
"integrity": "sha384-kUrPjqHkFqVzJQjH9DXySo3O27g0Jh9lAs8AJRf3MPN85968p9Du3UiQIZlTUPGc"
"integrity": "sha384-t4Rc0xunf7cHgsa4GmZ6vnQSM8MScEYAuOanJtw6N3AFc121el4ezZBOziQ5sn4g"
},
"_format-money-62afb78b.js": {
"file": "assets/format-money-62afb78b.js",
"_format-money-671dc543.js": {
"file": "assets/format-money-671dc543.js",
"imports": [
"_vendor-2609b2c9.js"
"_vendor-a378e2f6.js"
],
"integrity": "sha384-TAio40YCcyMAfzXMbgBAmXaAeUHGFYD0n7FRC3hgtUuTUlGLnYrxZtDc0/ulWnPd"
"integrity": "sha384-u4/V8Z+BOjg3B5Rr66V9qbpqYmKw99obgZ5GFm5jsIQ4ny2vvPPxOl9ncFcZmUe4"
},
"_get-5b4283ca.js": {
"file": "assets/get-5b4283ca.js",
"_get-2442245e.js": {
"file": "assets/get-2442245e.js",
"imports": [
"_format-money-62afb78b.js"
"_format-money-671dc543.js"
],
"integrity": "sha384-8G2j6ux1LVbsCSQQRonc1WDrDqdOxMoRJUeYlN1uMpZ/ui/8my/HGWOxFbLCStf3"
"integrity": "sha384-59o+3f59q6XekRx1rvWPssFYYvab0qhyJDb8LNC65GOUtv5H3MofQEvwtDfDea5N"
},
"_get-ea675e30.js": {
"file": "assets/get-ea675e30.js",
"_get-b107a850.js": {
"file": "assets/get-b107a850.js",
"imports": [
"_format-money-62afb78b.js"
"_format-money-671dc543.js"
],
"integrity": "sha384-cdp/pfZrpvE6Rs9OyKGrNAEX4fKIl78uvKtlSQnphz3GkPJzMq01f/5+0sOF4xue"
"integrity": "sha384-c9leZ4vhziOMbKjSbNE+OFRa/ulR05iFD8Q44H0olWx15EZO4Riv/38vaOLUY43y"
},
"_parse-downloaded-splits-6b9adc20.js": {
"file": "assets/parse-downloaded-splits-6b9adc20.js",
"_parse-downloaded-splits-2ed82645.js": {
"file": "assets/parse-downloaded-splits-2ed82645.js",
"imports": [
"_create-empty-split-aae839d5.js",
"_vendor-2609b2c9.js"
"_create-empty-split-0701ece8.js",
"_vendor-a378e2f6.js"
],
"integrity": "sha384-5o93Kgc0sXYdoE/lS3IknfCFLno5CseAZ8y6HtDM5mkkg43y6DOTFcxIW3xuOPvb"
"integrity": "sha384-7mea7ca38eZrxsn0w+Pq1DtWVVMOOWwA0Bj3Bgrfp3Y73BbOULiYsSrbdfLqzMXT"
},
"_put-c9d3942f.js": {
"file": "assets/put-c9d3942f.js",
"_put-46a33091.js": {
"file": "assets/put-46a33091.js",
"imports": [
"_format-money-62afb78b.js"
"_format-money-671dc543.js"
],
"integrity": "sha384-jBUmdZ39Tp/GN4Zr3suYFGsrfKw3j3GJDvBo8vh0eRA2Pbwk2PLIE8TWhAXu6zR3"
"integrity": "sha384-fOtnwXNnTQqqUDsYh38S1niBr+3fi25eQgT5vxe1vlLRT+t2VZIKF8W5byRyODWQ"
},
"_splice-errors-into-transactions-528a3749.js": {
"file": "assets/splice-errors-into-transactions-528a3749.js",
"_splice-errors-into-transactions-1af54a98.js": {
"file": "assets/splice-errors-into-transactions-1af54a98.js",
"imports": [
"_format-money-62afb78b.js",
"_get-5b4283ca.js",
"_vendor-2609b2c9.js"
"_format-money-671dc543.js",
"_get-2442245e.js",
"_vendor-a378e2f6.js"
],
"integrity": "sha384-AuGtawK1GzB4IW0SN1e52QLD+A/tG/LKEDnodKNDU8rRZr9EeYnf6bOIbSemYm5A"
"integrity": "sha384-GxihA1QYthkbY1sivMkhXhZMwZLiOo4Sy+SSfomt0SPMRALeGfmsp7CGZxPFa/Yz"
},
"_vendor-2609b2c9.js": {
"_vendor-a378e2f6.js": {
"assets": [
"assets/layers-1dbbe9d0.png",
"assets/layers-2x-066daca8.png",
@@ -60,8 +60,8 @@
"css": [
"assets/vendor-5c5099b4.css"
],
"file": "assets/vendor-2609b2c9.js",
"integrity": "sha384-dUB0xSeqzlyxX/anun8b4k38j63OmPyjAdpCLpuxq3A1CHRCnGMJswNn/NKzwhOS"
"file": "assets/vendor-a378e2f6.js",
"integrity": "sha384-G7SP4gfisGO4WQS5NbSdhllAH0C+8PwnUCNkNcidD0K1dlzeRAzEeReB8AgSaknu"
},
"node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf": {
"file": "assets/fa-brands-400-5656d596.ttf",
@@ -109,45 +109,45 @@
"integrity": "sha384-wg83fCOXjBtqzFAWhTL9Sd9vmLUNhfEEzfmNUX9zwv2igKlz/YQbdapF4ObdxF+R"
},
"resources/assets/v2/pages/dashboard/dashboard.js": {
"file": "assets/dashboard-5ef2eea4.js",
"file": "assets/dashboard-c24d6831.js",
"imports": [
"_format-money-62afb78b.js",
"_vendor-2609b2c9.js",
"_get-ea675e30.js",
"_get-5b4283ca.js"
"_format-money-671dc543.js",
"_vendor-a378e2f6.js",
"_get-b107a850.js",
"_get-2442245e.js"
],
"isEntry": true,
"src": "resources/assets/v2/pages/dashboard/dashboard.js",
"integrity": "sha384-U59Ky3Sz6ruwvg1AfP8JjhiN9OMRcG8+Tzhyyu22rSPKTSop1CLyhsUmOCfM8YhT"
"integrity": "sha384-tfmH/m7HI6vv5BrOkGX4ywNpLSUQ1tzy4HUW+iLONOxgayewUCozvvVz41uslCXW"
},
"resources/assets/v2/pages/transactions/create.js": {
"file": "assets/create-6378bb8a.js",
"file": "assets/create-41b39f26.js",
"imports": [
"_format-money-62afb78b.js",
"_create-empty-split-aae839d5.js",
"_splice-errors-into-transactions-528a3749.js",
"_vendor-2609b2c9.js",
"_get-5b4283ca.js"
"_format-money-671dc543.js",
"_create-empty-split-0701ece8.js",
"_splice-errors-into-transactions-1af54a98.js",
"_vendor-a378e2f6.js",
"_get-2442245e.js"
],
"isEntry": true,
"src": "resources/assets/v2/pages/transactions/create.js",
"integrity": "sha384-MGu6/JpMYPxpIy/FqXPwlGo4LAGC3MB5dV9PtszBnijuB/3bl4lemzdsmM5NSRDI"
"integrity": "sha384-0BDhwgizCGLAQkS4FX/YH5OGp6gptVVNvISLPLJijdiofmsly/XF0TDYOcYyCB42"
},
"resources/assets/v2/pages/transactions/edit.js": {
"file": "assets/edit-a6845b23.js",
"file": "assets/edit-03636773.js",
"imports": [
"_format-money-62afb78b.js",
"_get-ea675e30.js",
"_parse-downloaded-splits-6b9adc20.js",
"_splice-errors-into-transactions-528a3749.js",
"_vendor-2609b2c9.js",
"_create-empty-split-aae839d5.js",
"_put-c9d3942f.js",
"_get-5b4283ca.js"
"_format-money-671dc543.js",
"_get-b107a850.js",
"_parse-downloaded-splits-2ed82645.js",
"_splice-errors-into-transactions-1af54a98.js",
"_vendor-a378e2f6.js",
"_create-empty-split-0701ece8.js",
"_put-46a33091.js",
"_get-2442245e.js"
],
"isEntry": true,
"src": "resources/assets/v2/pages/transactions/edit.js",
"integrity": "sha384-/O7vRaIUH+cd83DZccxnrXf8YYsg2KjC/d5C1q5qNeh+MuFVl4NFShMQvE3n5tZp"
"integrity": "sha384-YdxVnYs84gkXg/q0JOg04yOAYUVGhQKE5koL8owkQxJT+Z7Rz08bi089OL5dOws9"
},
"resources/assets/v2/pages/transactions/index.css": {
"file": "assets/index-badb0a41.css",
@@ -158,16 +158,16 @@
"css": [
"assets/index-badb0a41.css"
],
"file": "assets/index-78b5f723.js",
"file": "assets/index-14ddc359.js",
"imports": [
"_format-money-62afb78b.js",
"_vendor-2609b2c9.js",
"_get-ea675e30.js",
"_put-c9d3942f.js"
"_format-money-671dc543.js",
"_vendor-a378e2f6.js",
"_get-b107a850.js",
"_put-46a33091.js"
],
"isEntry": true,
"src": "resources/assets/v2/pages/transactions/index.js",
"integrity": "sha384-A/WqZ8EUl2gLfNfwuyfHiN61ME/6IT+OKaySatMo7qKgQ3mVan6PRkenaANbzYQH"
"integrity": "sha384-OxoUa4pMfpnMy6o0uyUgaWk778UaiSAGqb5LJ2FgqOpgW+DxbDZVYlZMDed2F5ak"
},
"resources/assets/v2/pages/transactions/show.css": {
"file": "assets/show-8b1429e5.css",
@@ -178,17 +178,17 @@
"css": [
"assets/show-8b1429e5.css"
],
"file": "assets/show-c2b3bd03.js",
"file": "assets/show-150b8945.js",
"imports": [
"_format-money-62afb78b.js",
"_vendor-2609b2c9.js",
"_get-ea675e30.js",
"_parse-downloaded-splits-6b9adc20.js",
"_create-empty-split-aae839d5.js"
"_format-money-671dc543.js",
"_vendor-a378e2f6.js",
"_get-b107a850.js",
"_parse-downloaded-splits-2ed82645.js",
"_create-empty-split-0701ece8.js"
],
"isEntry": true,
"src": "resources/assets/v2/pages/transactions/show.js",
"integrity": "sha384-Cwohl3AO2jlS/+sY36BhwAFGmNhpWQZZZXsPVDd+a4a1jeJ0ScZBgxz8vtY+r4k0"
"integrity": "sha384-z82Fek/oMuG7E6D0Sl5zsrTinYczbvG/ZjEYv4iHo4Eqd/7u/C8aZz7IO1cyGwNg"
},
"resources/assets/v2/sass/app.scss": {
"file": "assets/app-fb7b26ec.css",

View File

@@ -18,7 +18,7 @@
{# PHP version + settings #}
<tr>
<td>PHP version</td>
<td>{{ system.php_version|escape }} / {{ system.interface }} / {{ system.php_os }}</td>
<td>{{ system.php_version|escape }} ({{ system.bits }}bits) / {{ system.interface }} / {{ system.php_os }} {{ system.uname }}</td>
</tr>
<tr>
<td>BCscale</td>