I'm just trying to change default User object for in-memory provider. Default User object is Symfony\Component\Security\Core\User\User. But this object doesn't fill my requirements, so i copied that object and added some properties for my requirements then named it as InMemoryUser and used it like following:
encoders:
App\Component\Security\Core\User\InMemoryUser: plaintext
Then i got the following error when tried to run the app.
No encoder has been configured for account "App\Component\Security\Core\User\InMemoryUser"
I saw the problem after investigeting about half hour. Symfony is calling Symfony\Component\Security\Core\User\InMemoryUserProvider by default and using Symfony\Component\Security\Core\User\User object to create in-memory users in __construct method.
Then i tryed to override default InMemoryUserProvider as following.
services:
App\Component\Security\Core\User\CustomInMemoryUserProvider:
decorates: security.user.provider.concrete.api_user_provider
arguments:
$users: [] # this should be contains in-memory users defined in the security.yaml but i dont know how to do that.
This works fine except a little problem, does not inject $users like InMemoryUserProvider. Normally, $users contains in-memory user list defined in security.yaml.
Now, how can i inject $users for my CustomInMemoryUserProvider and is this a good practice to change User object for InMemoryProvider ?
Thanks for your answers in advance.
I'm using symfony 5.1 by the way.