Error when creating user that exists with email address the same
Describe the bug
When I create a new user with the same email address, I get a stacktrace.
Steps to reproduce
- /cp-admin/users/new
- fill in as in image
- submit
- do 1-3 again with different username
- See the stacktrace
Expected behavior
Saying: This email is already taken!
Actual behavior
Stacktrace
Relevant logs and/or screenshots
CodeIgniter\Shield\Models\DatabaseException: Query error: 1062, Duplicate entry 'email_password-niccokunzmann@aol.com' for key 'type_secret', query: INSERT INTO `cp_auth_identities` (`user_id`, `type`, `secret`, `secret2`, `created_at`, `updated_at`) VALUES (9, 'email_password', 'niccokunzmann@aol.com', '$2y$12$zC2cKm1bCqBDB8FnmD2OeeGyFHvE4DSWeOhSsBPNRxPJorYJ3RGWS', '2024-05-07 13:28:23', '2024-05-07 13:28:23') in /var/www/castopod/vendor/codeigniter4/shield/src/Models/CheckQueryReturnTrait.php:38
Stack trace:
#0 /var/www/castopod/vendor/codeigniter4/shield/src/Models/UserIdentityModel.php(92): CodeIgniter\Shield\Models\BaseModel->checkQueryReturn(false)
#1 /var/www/castopod/vendor/codeigniter4/shield/src/Entities/User.php(147): CodeIgniter\Shield\Models\UserIdentityModel->createEmailIdentity(Object(CodeIgniter\Shield\Entities\User), Array)
#2 /var/www/castopod/vendor/codeigniter4/shield/src/Entities/User.php(177): CodeIgniter\Shield\Entities\User->createEmailIdentity(Array)
#3 /var/www/castopod/vendor/codeigniter4/shield/src/Models/UserModel.php(358): CodeIgniter\Shield\Entities\User->saveEmailIdentity()
#4 /var/www/castopod/vendor/codeigniter4/framework/system/BaseModel.php(1646): CodeIgniter\Shield\Models\UserModel->saveEmailIdentity(Array)
#5 /var/www/castopod/vendor/codeigniter4/framework/system/BaseModel.php(812): CodeIgniter\BaseModel->trigger('afterInsert', Array)
#6 /var/www/castopod/vendor/codeigniter4/framework/system/Model.php(744): CodeIgniter\BaseModel->insert(Array, false)
#7 /var/www/castopod/vendor/codeigniter4/shield/src/Models/UserModel.php(265): CodeIgniter\Model->insert(Object(CodeIgniter\Shield\Entities\User), false)
#8 /var/www/castopod/vendor/codeigniter4/framework/system/BaseModel.php(713): CodeIgniter\Shield\Models\UserModel->insert(Object(CodeIgniter\Shield\Entities\User), false)
#9 /var/www/castopod/vendor/codeigniter4/shield/src/Models/UserModel.php(327): CodeIgniter\BaseModel->save(Object(CodeIgniter\Shield\Entities\User))
#10 /var/www/castopod/modules/Auth/Controllers/UserController.php(106): CodeIgniter\Shield\Models\UserModel->save(Object(CodeIgniter\Shield\Entities\User))
#11 /var/www/castopod/modules/Auth/Controllers/UserController.php(30): Modules\Auth\Controllers\UserController->attemptCreate()
#12 /var/www/castopod/vendor/codeigniter4/framework/system/CodeIgniter.php(940): Modules\Auth\Controllers\UserController->_remap('attemptCreate')
#13 /var/www/castopod/vendor/codeigniter4/framework/system/CodeIgniter.php(502): CodeIgniter\CodeIgniter->runController(Object(Modules\Auth\Controllers\UserController))
#14 /var/www/castopod/vendor/codeigniter4/framework/system/CodeIgniter.php(361): CodeIgniter\CodeIgniter->handleRequest(NULL, Object(Config\Cache), false)
#15 /var/www/castopod/public/index.php(85): CodeIgniter\CodeIgniter->run()
#16 {main}
Context
- Castopod: 1.11.0
- OS: Dockeer
- Browser: Firefox 125
- Web server: nginx + proxy manager
Possible fixes
Check and just reload the page with the old value on it and also a notice that the email is taken.