J'ai donc suivi ce tutoriel pour forcer les utilisateurs incomplets à s'inscrire s'ils viennent d'Oauth et n'ont pas d'e-mail sur leur compte facebook/twitter.Poignée Symfony ne fonctionnant pas
http://alexfu.it/2012/11/09/force-incomplete-users-to-complete-registration/
Dans la dernière étape, il est une fonction de poignée et il ne semble pas toujours être le déclenchement. Y a-t-il autre chose qui manque?
namespace FYP\UserBundle\Listener;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Security\Http\Authorization\AccessDeniedHandlerInterface;
class UserIncompleteListener implements AccessDeniedHandlerInterface
{
protected $security;
protected $router;
public function __construct($security, $router)
{
$this->security = $security;
$this->router = $router;
}
public function handle(Request $request, AccessDeniedException $accessDeniedException)
{
if(!is_null($this->security->getToken()->getUser()->getRoles()) && $this->security->getToken()->getUser()->getRoles() == array('ROLE_INCOMPLETE_USER')) {
return new RedirectResponse($this->router->generate('register_complete'));
}
}
}
Config:
fyp_user.access_denied.handler:
class: FYP\UserBundle\Listener\UserIncompleteListener
arguments:
security: @security.context
router: @router
Sécurité:
firewalls:
main:
access_denied_handler: fyp_user.access_denied.handler
Heres mon pare-feu:
firewalls:
main:
access_denied_handler: fyp_user.access_denied.handler
pattern: ^/
anonymous: ~
oauth:
failure_path: /login
login_path: /login
check_path: /connect_check
provider: fos_userbundle
remember_me: true
always_use_default_target_path: false
default_target_path: /login
resource_owners:
facebook: "/external-login/check-facebook"
paypal: "/external-login/check-paypal"
amazon: "/external-login/check-amazon"
oauth_user_provider:
service: app.provider.oauth
remember_me:
key: %secret% # pararmeter
lifetime: 31536000 # 365 days in seconds
path: /
domain: ~
always_remember_me: true
form_login:
login_path: /login
check_path: /login_check
success_handler: authentication_handler
failure_handler: authentication_handler
csrf_provider: form.csrf_provider
remember_me: true
logout: true
anonymous: true
switch_user: { role: ROLE_ALLOWED_TO_SWITCH, parameter: _new_user }
remember_me:
key: %secret% # pararmeter
lifetime: 31536000 # 365 days in seconds
path: /
domain: ~
always_remember_me: true
Merci!
Merci, j'ai ajouté cela et lu la documentation mais il ne se déclenchera pas. – Jeremy