Bonjour,

Sur une application utilisant FOSUserBundle, je souhaiterait personnaliser la page de login si la demande provient d'une requete Ajax.
je voudrais notamment modifier le code status de la reponse http pour pouvoir traiter globalement tout les appels Ajax qui échouent pour cause d'expiration de session.
mon code coté client avec jQuery:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
//monBundleQuiExtendFOSUSerBundle\resources\public\js\security.js
//function lancée pour toutes les erreurs ajax de l'application
$(document).ajaxError(	function(event, jqXHR, ajaxSettings, thrownError){
				if(jqXHR.status==401){
				  var content=jqXHR.responseText
				  alert('vous êtes déconnecté');
				  //proposer une reconnexion
				 }
			});
ce que je pensais faire était de simplement redéfinir loginAction de securityController

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
//monBundleQuiExtendFOSUSerBundle\Controller\SecurityController
class SecurityController extends \FOS\UserBundle\Controller\SecurityController {
public function loginAction() {
    $response = parent::loginAction();    
    if($this->get('request')->isXmlHttpRequest()){      
      $response->setStatusCode(401);
      $response->setContent($unTemplateDeConnexionSansLayout);
    }    
    return $response;//renvoit le formulaire de connexion
  }
}
Mais ça ne fonctionne pas, si l'utilisateur n'est pas authentifié, le firewall lance une exception.
Cette exception est interceptée et renvoit une RedirectResponse vers la route du login.
Si bien que l'objet Request qui est traité dans mon controlleur n'est pas la requete Ajax initiale mais une requete de redirection par symfony.

Ya t'il un moyen de récupérer la requete précédente du type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$this->container->get('request')->getPreviousRequest()->isXmlHTTPRequest()