diff --git a/.env.example b/.env.example index fb1d526bc5..d429db05fd 100644 --- a/.env.example +++ b/.env.example @@ -206,6 +206,11 @@ DISABLE_CSP_HEADER=false TRACKER_SITE_ID= TRACKER_URL= +# +# Firefly III could (in the future) collect telemetry on how you use Firefly III. +# In order to allow this, change the following variable to true: +SEND_TELEMETRY=false + # You can fine tune the start-up of a Docker container by editing these environment variables. # Use this at your own risk. Disabling certain checks and features may result in lost of inconsistent data. # However if you know what you're doing you can significantly speed up container start times. diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 5a860b42ab..0128903939 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -43,6 +43,7 @@ class HomeController extends Controller { /** * HomeController constructor. + * * @codeCoverageIgnore */ public function __construct() @@ -57,6 +58,7 @@ class HomeController extends Controller * Change index date range. * * @param Request $request + * * @return JsonResponse * @throws Exception */ @@ -98,6 +100,7 @@ class HomeController extends Controller * Show index. * * @param AccountRepositoryInterface $repository + * * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View * @throws Exception */ diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index dc50579d2c..df0db26d4a 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -25,6 +25,7 @@ namespace FireflyIII\Http; use FireflyIII\Http\Middleware\Authenticate; use FireflyIII\Http\Middleware\Binder; use FireflyIII\Http\Middleware\EncryptCookies; +use FireflyIII\Http\Middleware\InstallationId; use FireflyIII\Http\Middleware\Installer; use FireflyIII\Http\Middleware\InterestingMessage; use FireflyIII\Http\Middleware\IsAdmin; @@ -70,6 +71,7 @@ class Kernel extends HttpKernel TrimStrings::class, ConvertEmptyStringsToNull::class, TrustProxies::class, + InstallationId::class ]; /** diff --git a/app/Http/Middleware/InstallationId.php b/app/Http/Middleware/InstallationId.php new file mode 100644 index 0000000000..5e7848de6b --- /dev/null +++ b/app/Http/Middleware/InstallationId.php @@ -0,0 +1,61 @@ +. + */ + +declare(strict_types=1); + + +namespace FireflyIII\Http\Middleware; + +use Closure; +use FireflyIII\Exceptions\FireflyException; +use Log; +use Ramsey\Uuid\Uuid; + +/** + * + * Class InstallationId + */ +class InstallationId +{ + /** + * Handle an incoming request. + * + * @param \Illuminate\Http\Request $request + * @param Closure $next + * + * @return mixed + * + * @throws FireflyException + * + */ + public function handle($request, Closure $next) + { + $config = app('fireflyconfig')->get('installation_id', null); + if (null === $config) { + $uuid5 = Uuid::uuid5(Uuid::NAMESPACE_URL, 'firefly-iii.org'); + $uniqueId = (string)$uuid5; + Log::info(sprintf('Created Firefly III installation ID %s', $uniqueId)); + app('fireflyconfig')->set('installation_id', $uniqueId); + } + + return $next($request); + } +} \ No newline at end of file diff --git a/composer.json b/composer.json index 7ff32b4c76..64ab365414 100644 --- a/composer.json +++ b/composer.json @@ -88,6 +88,7 @@ "pragmarx/google2fa": "^7.0", "pragmarx/recovery": "^0.1.0", "predis/predis": "^1.1", + "ramsey/uuid": "^3.9", "rcrowe/twigbridge": "^0.11.2" }, "require-dev": { diff --git a/composer.lock b/composer.lock index 9bdf5fc822..2b545ef8d1 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9c7b883d0a087261d6c484e9f274ecf5", + "content-hash": "8fea3d9d5b2e1f842ccd34736b68d74b", "packages": [ { "name": "adldap2/adldap2",