Ecco il codice per l'override l'azione. Fondamentalmente ho appena copiato parte dell'azione FOS e modificato.
Creare un file RegistrationController.php nella cartella del controller del pacchetto utente e inserire la classe OverController di override.
Assumendo che il fascio utente è Acme \ UserBundle:
<?php
// Acme\UserBundle\RegistrationController.php
namespace Acme\UserBundle\Controller;
use Symfony\Component\HttpFoundation\RedirectResponse;
use FOS\UserBundle\Controller\RegistrationController as BaseController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class RegistrationController extends BaseController
{
/**
* Receive the confirmation token from user email provider, login the user
*/
public function confirmAction(Request $request, $token)
{
$userManager = $this->container->get('fos_user.user_manager');
$user = $userManager->findUserByConfirmationToken($token);
if (null === $user) {
/* ************************************
*
* User with token not found. Do whatever you want here
*
* e.g. redirect to login:
*
* return new RedirectResponse($this->container->get('router')->generate('fos_user_security_login'));
*
**************************************/
}
else{
// Token found. Letting the FOSUserBundle's action handle the confirmation
return parent::confirmAction($request, $token);
}
}
}
Avendo questo stesso problema e alla ricerca di una soluzione. Non c'è spazio per gli utenti stupidi che fanno doppio clic su tutto !! – gezpage
Dovrebbe essere gestibile, ma non lo è. La stessa cosa quando si esegue il doppio clic sul link pasword, dopo che l'intervallo di richiesta della password scade. L'unica cosa che ha funzionato per me è quella di "scavalcare" il routing su fosuser: conferma l'azione in modo da indirizzare all'azione che ho scritto. Parte che sovrascrive in modo fondamentale il controllore del bundle utente di fos. Nella mia azione controllo l'hash di conferma, se esiste, inoltro a fosuserbundle: registrazione: conferma. In caso contrario - I eco un messaggio. Posso fornire un codice più tardi. – tiriana