lonnieezell / Bonfire2

CodeIgniter 4-based application skeleton

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Update to latest code (including Shield beta3) breaks add user functionality

dgvirtual opened this issue · comments

The latest update:

  • Upgrading codeigniter4/shield (v1.0.0-beta.2 => v1.0.0-beta.3): Extracting archive
  • Upgrading codeigniter4/framework (v4.2.7 => v4.2.10): Extracting archive
  • Upgrading lonnieezell/bonfire (dev-develop 89c40fe => dev-develop d1fb7a0): Extracting archive

has broken the add user functionality... Right on opening
http://localhost:8080/admin/users/new
I get an error.

Here is the error in the log:

in VENDORPATH/codeigniter4/shield/src/Models/UserIdentityModel.php on line 81.
 1 VENDORPATH/codeigniter4/shield/src/Models/UserIdentityModel.php(231): CodeIgniter\Shield\Models\UserIdentityModel->checkUserId(Object(Bonfire\Users\User))
 2 VENDORPATH/codeigniter4/shield/src/Entities/User.php(81): CodeIgniter\Shield\Models\UserIdentityModel->getIdentities(Object(Bonfire\Users\User))
 3 VENDORPATH/codeigniter4/shield/src/Entities/User.php(95): CodeIgniter\Shield\Entities\User->populateIdentities()
 4 VENDORPATH/codeigniter4/shield/src/Entities/User.php(66): CodeIgniter\Shield\Entities\User->getIdentities('email_password')
 5 VENDORPATH/codeigniter4/shield/src/Entities/User.php(134): CodeIgniter\Shield\Entities\User->getIdentity('email_password')
 6 VENDORPATH/codeigniter4/shield/src/Entities/User.php(214): CodeIgniter\Shield\Entities\User->getEmailIdentity()
 7 SYSTEMPATH/Entity/Entity.php(491): CodeIgniter\Shield\Entities\User->getEmail()
 8 VENDORPATH/lonnieezell/bonfire/src/Users/User.php(26): CodeIgniter\Entity\Entity->__get('email')
 9 VENDORPATH/lonnieezell/bonfire/src/Users/Views/form.php(39): Bonfire\Users\User->renderAvatar(140)
10 SYSTEMPATH/View/View.php(213): include('VENDORPATH/lonnieezell/bonfire/src/Users/Views/form.php')
11 SYSTEMPATH/View/View.php(216): CodeIgniter\View\View->CodeIgniter\View\{closure}()
12 VENDORPATH/lonnieezell/bonfire/src/View/Themeable.php(46): CodeIgniter\View\View->render('Bonfire\\Users\\Views\\form', null, true)
13 VENDORPATH/lonnieezell/bonfire/src/Users/Controllers/UserController.php(74): Bonfire\Core\BaseController->render('Bonfire\\Users\\Views\\form', [...])
14 SYSTEMPATH/CodeIgniter.php(927): Bonfire\Users\Controllers\UserController->create()
15 SYSTEMPATH/CodeIgniter.php(482): CodeIgniter\CodeIgniter->runController(Object(Bonfire\Users\Controllers\UserController))
16 SYSTEMPATH/CodeIgniter.php(351): CodeIgniter\CodeIgniter->handleRequest(null, Object(Config\Cache), false)
17 FCPATH/index.php(67): CodeIgniter\CodeIgniter->run()
18 SYSTEMPATH/Commands/Server/rewrite.php(46): require_once('FCPATH/index.php')
CRITICAL - 2022-12-03 05:47:39 --> "$user->id" is null. You should not use the incomplete User object.
in VENDORPATH/codeigniter4/shield/src/Models/UserIdentityModel.php on line 81.
 1 VENDORPATH/codeigniter4/shield/src/Models/UserIdentityModel.php(231): CodeIgniter\Shield\Models\UserIdentityModel->checkUserId(Object(Bonfire\Users\User))
 2 VENDORPATH/codeigniter4/shield/src/Entities/User.php(81): CodeIgniter\Shield\Models\UserIdentityModel->getIdentities(Object(Bonfire\Users\User))
 3 VENDORPATH/codeigniter4/shield/src/Entities/User.php(95): CodeIgniter\Shield\Entities\User->populateIdentities()
 4 VENDORPATH/codeigniter4/shield/src/Entities/User.php(66): CodeIgniter\Shield\Entities\User->getIdentities('email_password')
 5 VENDORPATH/codeigniter4/shield/src/Entities/User.php(134): CodeIgniter\Shield\Entities\User->getIdentity('email_password')
 6 VENDORPATH/codeigniter4/shield/src/Entities/User.php(214): CodeIgniter\Shield\Entities\User->getEmailIdentity()
 7 SYSTEMPATH/Entity/Entity.php(491): CodeIgniter\Shield\Entities\User->getEmail()
 8 VENDORPATH/lonnieezell/bonfire/src/Users/User.php(26): CodeIgniter\Entity\Entity->__get('email')
 9 VENDORPATH/lonnieezell/bonfire/src/Users/Views/form.php(39): Bonfire\Users\User->renderAvatar(140)
10 SYSTEMPATH/View/View.php(213): include('VENDORPATH/lonnieezell/bonfire/src/Users/Views/form.php')
11 SYSTEMPATH/View/View.php(216): CodeIgniter\View\View->CodeIgniter\View\{closure}()
12 VENDORPATH/lonnieezell/bonfire/src/View/Themeable.php(46): CodeIgniter\View\View->render('Bonfire\\Users\\Views\\form', null, true)
13 VENDORPATH/lonnieezell/bonfire/src/Users/Controllers/UserController.php(74): Bonfire\Core\BaseController->render('Bonfire\\Users\\Views\\form', [...])
14 SYSTEMPATH/CodeIgniter.php(927): Bonfire\Users\Controllers\UserController->create()
15 SYSTEMPATH/CodeIgniter.php(482): CodeIgniter\CodeIgniter->runController(Object(Bonfire\Users\Controllers\UserController))
16 SYSTEMPATH/CodeIgniter.php(351): CodeIgniter\CodeIgniter->handleRequest(null, Object(Config\Cache), false)
17 FCPATH/index.php(67): CodeIgniter\CodeIgniter->run()
18 SYSTEMPATH/Commands/Server/rewrite.php(46): require_once('FCPATH/index.php')

I have traced the error to the offending line of code, it is line 39 in file

vendor/lonnieezell/bonfire/src/Users/Views/form.php :

<?= isset($user) ? $user->renderAvatar(140) : (new \Bonfire\Users\User())->renderAvatar(140) ?>

To be precise, – the last part of code (new \Bonfire\Users\User())->renderAvatar(140) - if it is replaced with an empty string the error does not occur. But that still breaks functionality.

Unable to get the error with current code.