-
-
Notifications
You must be signed in to change notification settings - Fork 9.6k
[DoctrineBridge] Add username to UserNameNotFoundException #39880
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Hey! I see that this is your first PR. That is great! Welcome! Symfony has a contribution guide which I suggest you to read. In short:
Review the GitHub status checks of your pull request and try to solve the reported issues. If some tests are failing, try to see if they are failing because of this change. When two Symfony core team members approve this change, it will be merged and you will become an official Symfony contributor! I am going to sit back now and wait for the reviews. Cheers! Carsonbot |
This exception is thrown in other places as well. Can you update them too? |
@xabbuh I updated all other cases. There are some cases where the username is set on this exception after the fact such as in the following line: symfony/src/Symfony/Component/Security/Core/Authentication/Provider/UserAuthenticationProvider.php Line 69 in 494ef42
I am not sure if these are still needed (they probably are) |
Looks like we could update the |
4e23273
to
073a4b0
Compare
I added the other two cases |
@@ -92,7 +95,10 @@ public function refreshUser(UserInterface $user) | |||
|
|||
$refreshedUser = $repository->find($id); | |||
if (null === $refreshedUser) { | |||
throw new UsernameNotFoundException('User with id '.json_encode($id).' not found.'); | |||
$ex = new UsernameNotFoundException('User with id '.json_encode($id).' not found.'); | |||
$ex->setUsername(json_encode($id)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why json_encoding here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See for example
symfony/src/Symfony/Bridge/Doctrine/Tests/Security/User/EntityUserProviderTest.php
Line 129 in 91d8beb
$this->expectExceptionMessage('User with id {"id1":1,"id2":2} not found'); |
Here $id
is not a string or even string like, while the username field is documented to be a string. I guess UsernameNotFoundException
does not convey what the exact error is, because $id
is not a username.
src/Symfony/Bridge/Doctrine/Security/User/EntityUserProvider.php
Outdated
Show resolved
Hide resolved
@@ -92,7 +95,10 @@ public function refreshUser(UserInterface $user) | |||
|
|||
$refreshedUser = $repository->find($id); | |||
if (null === $refreshedUser) { | |||
throw new UsernameNotFoundException('User with id '.json_encode($id).' not found.'); | |||
$ex = new UsernameNotFoundException('User with id '.json_encode($id).' not found.'); | |||
$ex->setUsername(json_encode($id)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why json_encoding here?
Thank you @qurben. |
Adds username to UserNameNotFoundException when thrown from EntityUserProvider.
In other places there are no tests for this and I am not sure if the current setup even allows asserting if exceptions contain fields, besides the default ones.