Como efetuar login automaticamente em um novo usuário após o registro em um provedor de usuário personalizado no Silex?
Contexto: criei um provedor de usuário personalizado para o meu aplicativo Silex e agora posso registrar e registrar meu próprio usuário perfeitamente. No entanto, agora preciso fazer login automaticamente no meu usuário após o registro e isso não funciona.
Aqui está minha seção de segurança:
'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']);
})
)
Aqui está o meu 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;
}
Com o Xdebug, eu posso ver isso aqui:
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
contém apenas um provedor:'Users' => null
Observe que :
Login, registro e logout funcionam perfeitamente. Este erro é acionado apenas quando eu quero entrar automaticamente no meu usuário após o registro. Aqui está o código:
$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"));
Após o registro, eu crio automaticamente o token e redireciono o usuário na área segura, mas o Silex o redireciona na página de login e, se eu clicar em algum lugar, recebo:
Não há provedor de usuário para o usuário "Partner \ Entity \ Partner".
Não sei mais onde procurar e realmente preciso de ajuda.