Context : I created a custom user provider for my Silex Application and I can now register and log my own user perfectly. However, I need now to automatically log in my user after registration and this doesn't work.
Here is my security section :
'secured' => array(
'pattern' => '^/',
'anonymous' => false,
'form' => array('login_path' => '/login', 'check_path' => '/login_check'),
'logout' => array('logout_path' => '/logout', 'invalidate_session' => true),
'users' => $app->share(function () use ($app) {
return new Partner\DAO\PartnerDAO($app['db']);
})
)
Here is my userProviderInterface :
public function refreshUser(UserInterface $user)
{
if (!$user instanceof Partner) {
throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', get_class($user)));
}
return $this->loadUserByUsername($user->getUsername());
}
public function supportsClass($class)
{
return 'Partner\Entity\Partner' === $class;
}
With Xdebug, I can see that here :
foreach ($this->userProviders as $provider) {
try {
$refreshedUser = $provider->refreshUser($user);
$token->setUser($refreshedUser);
if (null !== $this->logger) {
$this->logger->debug('User was reloaded from a user provider.', array('username' => $refreshedUser->getUsername(), 'provider' => get_class($provider)));
}
return $token;
$this->userProviders
only contains one provider : 'Users' => null
Note that :
Login, register and logout work perfectly. This error is only triggered when I want to automatically login my user after registration. Here is the code :
$token = new UsernamePasswordToken($partner, null, 'secured', $partner->getRoles());
// Note that $partner->getRoles() is array('ROLE_USER')
$app['security.token_storage']->setToken($token);
return $app->redirect($app["url_generator"]->generate("partner_home"));
After registration, I automatically create the token and redirect the user in the secured area but Silex redirect it on the login page and if I click somewhere i get :
There is no user provider for user "Partner\Entity\Partner".
I don't know where to search anymore and I could really need some help.