oulaaaa ... mais c'est qu'il va mordre !
Alors si je pige bien il y a deux trucs a faire:
(1) Limiter les accès si le user est pas loggé aux pages home , login , signup , et forgot. Je suppose que les 3 dernières pages ont leurs url respectives, et la première est celle sur laquelle on arrive en tapant http://www.exemple.com.
(2) Changer la page retournée pas cake lorsque le user demande http://www.exemple.com: S'il n'est pas loggé, ca doit être home, donc, mais s'il est loggé, ca doit être son profile. Je comprends aussi que tu ne veux <u>pas de redirect</u> (ce que je ne m'explique pas mais bon ...), et j'imagine que les pages home et profile doivent être accessibles également a partir de leurs propres url
Encore une fois je ne connais pas cake, et je fait confiance a certains pour me le dire si je dis une anerie ^^, mais:
(1) Limiter les accès en fonction de loggé / pas loggé, je pense pas que ce soit compliqué. Je sais bien que cakePHP n'arrive pas a la cheville de symfony2 (clin d’œil amical a mon copain qui se reconnaitra ;) ...), mais ça, au moins, j'imagine que c'est possible.
(2) Pour le second point, il semble juste qu'il faille déléguer la réponse du controller / action appelé par la requête http://www.exemple.com a un autre couple controller/action. Il faut donc que tu créés:
- le couple controller/action qui correspond a la route http://www.exemple.com/home (controller = Pages, action = home)
-
le couple controller/action qui correspond a la route http://www.exemple.com/profile (controller = Users, action = home)
Puis, depuis ton controller appelé par la route http://www.exemple.com, faire le truc suivant:
$this->autoRender = false;
$d = new Dispatcher();
if( !$this->Auth->loggedIn() )
$d->dispatch( array("controller" => "Pages", "action" => "home") );
else
$d->dispatch( array("controller" => "Users", "action" => "home") );
Il semble que cela aurait pour effet de déléguer la réponse a une autre action d'un autre controller, sans utiliser de redirect ...
SOURCE
(tadaaaaam ?)