Firefly-iii: 2FA setup error

Created on 13 Mar 2019  路  3Comments  路  Source: firefly-iii/firefly-iii

Bug description
I am running Firefly III version 4.7.16 and my problem is:

When I try to enable the 2FA I get the following error:
Class 'BaconQrCode\Renderer\Image\Png' not found

Steps to reproduce
Options : Profile : Enable 2-step verification

Expected behavior
Set up 2FA.

Extra info
Debug information generated at 2019-03-13 15:06:04 Europe/Berlin for Firefly III version 4.7.16.

| Variable | Content |
| --- | --- |
| FF version | 4.7.16 |
| FF API version | 0.9.2 |
| App environment | local |
| App debug mode | '' |
| App cache driver | file |
| App logging | , stdout |
| PHP version | 7.2.15 |
| Display errors | Off |
| Session start | 2019-03-01 00:00:00 |
| Session end | 2019-03-31 23:59:59 |
| Session first | 2019-02-26 00:00:00 |
| Error reporting | ALL errors |
| Host | Linux |
| Interface | apache2handler |
| UserID | 1 |
| Attempt at "en" | false |
| Attempt at "English" | false |
| Attempt at "en_US.utf8" | 'en_US.utf8' |
| Attempt at "en_US.UTF-8" | 'en_US.UTF-8' |
| DB drivers | mysql, pgsql, sqlite |
| Current driver | pgsql |
| Login provider | |
| Storage disks | local-upload |
| Using Sandstorm? | no |
| Is Sandstorm (.env) | false |
| Is Docker (.env) | true |
| bunq uses sandbox | false |
| Trusted proxies (.env) | |
| User agent | Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0 |
| Loaded extensions | Core, date, libxml, openssl, pcre, sqlite3, zlib, ctype, curl, dom, fileinfo, filter, ftp, hash, iconv, json, mbstring, SPL, PDO, session, posix, Reflection, standard, SimpleXML, pdo_sqlite, Phar, tokenizer, xml, xmlreader, xmlwriter, mysqlnd, apache2handler, bcmath, gd, intl, ldap, memcached, pdo_mysql, pdo_pgsql, sodium, zip, Zend OPcache |

Bonus points

192.168.1.61 - - [13/Mar/2019:15:07:53 +0100] "GET /profile/2fa/code HTTP/1.1" 500 5218 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0"
192.168.1.61 - - [13/Mar/2019:15:08:26 +0100] "POST /profile/enable2FA HTTP/1.1" 302 1983 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0"
[2019-03-13 15:08:26] local.ERROR: Class 'BaconQrCode\Renderer\Image\Png' not found {"userId":1,"exception":"[object] (Symfony\Component\Debug\Exception\FatalThrowableError(code: 0): Class 'BaconQrCode\Renderer\Image\Png' not found at /var/www/firefly-iii/vendor/pragmarx/google2fa/src/Support/QRCode.php:54)
[stacktrace]

0 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(237): PragmaRX\Google2FA\Google2FA->getQRCodeInline('192.168.1.10', 'ricotwesten@gma...', 'PMWIVE32W6OL2O7...')

1 /var/www/firefly-iii/app/Http/Controllers/ProfileController.php(142): Illuminate\Support\Facades\Facade::__callStatic('getQRCodeInline', Array)

2 [internal function]: FireflyIII\Http\Controllers\ProfileController->code()

3 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): call_user_func_array(Array, Array)

4 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\Routing\Controller->callAction('code', Array)

5 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Route.php(219): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(FireflyIII\Http\Controllers\ProfileController), 'code')

6 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Route.php(176): Illuminate\Routing\Route->runController()

7 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Router.php(680): Illuminate\Routing\Route->run()

8 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

9 /var/www/firefly-iii/app/Http/Middleware/IsSandStormUser.php(57): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

10 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): FireflyIII\Http\Middleware\IsSandStormUser->handle(Object(Illuminate\Http\Request), Object(Closure))

11 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

12 /var/www/firefly-iii/app/Http/Middleware/IsDemoUser.php(66): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

13 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): FireflyIII\Http\Middleware\IsDemoUser->handle(Object(Illuminate\Http\Request), Object(Closure))

14 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

15 /var/www/firefly-iii/app/Http/Controllers/ProfileController.php(72): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

16 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(145): FireflyIII\Http\Controllers\ProfileController->FireflyIII\Http\Controllers\{closure}(Object(Illuminate\Http\Request), Object(Closure))

17 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

18 /var/www/firefly-iii/app/Http/Controllers/Controller.php(87): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

19 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(145): FireflyIII\Http\Controllers\Controller->FireflyIII\Http\Controllers\{closure}(Object(Illuminate\Http\Request), Object(Closure))

20 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

21 /var/www/firefly-iii/app/Http/Middleware/Binder.php(78): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

22 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): FireflyIII\Http\Middleware\Binder->handle(Object(Illuminate\Http\Request), Object(Closure))

23 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

24 /var/www/firefly-iii/app/Http/Middleware/Range.php(60): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

25 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): FireflyIII\Http\Middleware\Range->handle(Object(Illuminate\Http\Request), Object(Closure))

26 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

27 /var/www/firefly-iii/app/Http/Middleware/AuthenticateTwoFactor.php(86): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

28 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): FireflyIII\Http\Middleware\AuthenticateTwoFactor->handle(Object(Illuminate\Http\Request), Object(Closure))

29 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

30 /var/www/firefly-iii/app/Http/Middleware/Authenticate.php(73): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

31 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): FireflyIII\Http\Middleware\Authenticate->handle(Object(Illuminate\Http\Request), Object(Closure))

32 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

33 /var/www/firefly-iii/vendor/laravel/passport/src/Http/Middleware/CreateFreshApiToken.php(50): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

34 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Laravel\Passport\Http\Middleware\CreateFreshApiToken->handle(Object(Illuminate\Http\Request), Object(Closure))

35 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

36 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(75): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

37 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))

38 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

39 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

40 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))

41 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

42 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(59): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

43 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))

44 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

45 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

46 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))

47 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

48 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(66): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

49 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))

50 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

51 /var/www/firefly-iii/app/Http/Middleware/Sandstorm.php(54): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

52 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): FireflyIII\Http\Middleware\Sandstorm->handle(Object(Illuminate\Http\Request), Object(Closure))

53 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

54 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(104): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

55 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Router.php(682): Illuminate\Pipeline\Pipeline->then(Object(Closure))

56 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Router.php(657): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))

57 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Router.php(623): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route))

58 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Router.php(612): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))

59 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))

60 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))

61 /var/www/firefly-iii/vendor/fideloper/proxy/src/TrustProxies.php(57): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

62 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Fideloper\Proxy\TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure))

63 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

64 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

65 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))

66 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

67 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

68 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))

69 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

70 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

71 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure))

72 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

73 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(62): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

74 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))

75 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

76 /var/www/firefly-iii/app/Http/Middleware/SecureHeaders.php(45): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

77 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): FireflyIII\Http\Middleware\SecureHeaders->handle(Object(Illuminate\Http\Request), Object(Closure))

78 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

79 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(104): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

80 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(151): Illuminate\Pipeline\Pipeline->then(Object(Closure))

81 /var/www/firefly-iii/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))

82 /var/www/firefly-iii/public/index.php(76): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))

83 {main}

"}
192.168.1.61 - - [13/Mar/2019:15:08:26 +0100] "GET /profile/2fa/code HTTP/1.1" 500 5208 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0"

2019-03-13 15_05_55-Window

bug fixed

Most helpful comment

Found a temporary workaround: I ran

docker exec -it firefly composer require bacon/bacon-qr-code 1.0.3

to revert the version of the relevant library (found the tip somewhere). It's needed only once to produce the QR code so you can scan with the mobile app and enable the 2FA.

Following that destroying and recreating the container doesn't matter because the QR code thing is no longer needed.

All 3 comments

Got the same issue on a new docker container.

Found a temporary workaround: I ran

docker exec -it firefly composer require bacon/bacon-qr-code 1.0.3

to revert the version of the relevant library (found the tip somewhere). It's needed only once to produce the QR code so you can scan with the mobile app and enable the 2FA.

Following that destroying and recreating the container doesn't matter because the QR code thing is no longer needed.

This will be fixed in the next release. Thanks for notifying me.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

nicoschreiner picture nicoschreiner  路  3Comments

vlcty picture vlcty  路  3Comments

nicoschreiner picture nicoschreiner  路  3Comments

somethingGoneWrong picture somethingGoneWrong  路  3Comments

GaryQ picture GaryQ  路  3Comments