<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Commentaires sur : Interface d&#8217;administration d&#8217;un site CakePHP avec le Composant Auth</title>
	<atom:link href="http://www.formation-cakephp.com/31/interface-dadministration-dun-site-cakephp-avec-le-composant-auth/feed" rel="self" type="application/rss+xml" />
	<link>http://www.formation-cakephp.com/31/interface-dadministration-dun-site-cakephp-avec-le-composant-auth</link>
	<description>Le cadre de développement PHP et son utilisation au jour le jour.</description>
	<pubDate>Sat, 17 May 2008 09:49:58 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>Par : Chris</title>
		<link>http://www.formation-cakephp.com/31/interface-dadministration-dun-site-cakephp-avec-le-composant-auth#comment-185</link>
		<dc:creator>Chris</dc:creator>
		<pubDate>Thu, 01 May 2008 08:22:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.formation-cakephp.com/31/interface-dadministration-dun-site-cakephp-avec-le-composant-auth#comment-185</guid>
		<description>BINGO !  J'ai trouvé.

Tout d'abord, pas d'erreur en retournant directement à la racine.

Et j'ai tourné en rond pendant 1 heure ce matin, avant de réaliser. C'était dû à un stupide problème d'internationalisation.

En effet, j'ai pris l'habitude d'utiliser au maximum le script bake pour produire mon code. Je laisse les textes tels quels dans les fichiers produits et je traduis tout dans /locale/fre/LC_MESSAGES/default.po.
C'est très pratique.

Donc, dans la fonction logout, j'ai écrit :

&lt;code&gt;$this-&#62;Session-&#62;setFlash(__('Logged out.'));&lt;/code&gt;

que j'ai traduit dans le fichier .po

Mal m'en a pris, c'est ça qui a m'a planté. Auth ne sait apparemment pas gérer ça, et renvoie la traduction AVANT le layout, et non pas DANS le layout, à l'endroit du &lt;code&gt;&#60;?php $session-&#62;flash('auth'); ?&#62;
&lt;/code&gt;
Morale de l'histoire :
Toujours reproduire fidèlement un tuto, au caractère près. Une fois que ça marche, on peut s'amuser à modifier. Bien fait pour moi !</description>
		<content:encoded><![CDATA[<p>BINGO !  J&#8217;ai trouvé.</p>
<p>Tout d&#8217;abord, pas d&#8217;erreur en retournant directement à la racine.</p>
<p>Et j&#8217;ai tourné en rond pendant 1 heure ce matin, avant de réaliser. C&#8217;était dû à un stupide problème d&#8217;internationalisation.</p>
<p>En effet, j&#8217;ai pris l&#8217;habitude d&#8217;utiliser au maximum le script bake pour produire mon code. Je laisse les textes tels quels dans les fichiers produits et je traduis tout dans /locale/fre/LC_MESSAGES/default.po.<br />
C&#8217;est très pratique.</p>
<p>Donc, dans la fonction logout, j&#8217;ai écrit :</p>
<p><code>$this-&gt;Session-&gt;setFlash(__('Logged out.'));</code></p>
<p>que j&#8217;ai traduit dans le fichier .po</p>
<p>Mal m&#8217;en a pris, c&#8217;est ça qui a m&#8217;a planté. Auth ne sait apparemment pas gérer ça, et renvoie la traduction AVANT le layout, et non pas DANS le layout, à l&#8217;endroit du <code>&lt;?php $session-&gt;flash('auth'); ?&gt;<br />
</code><br />
Morale de l&#8217;histoire :<br />
Toujours reproduire fidèlement un tuto, au caractère près. Une fois que ça marche, on peut s&#8217;amuser à modifier. Bien fait pour moi !</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Pierre-Emmanuel Fringant</title>
		<link>http://www.formation-cakephp.com/31/interface-dadministration-dun-site-cakephp-avec-le-composant-auth#comment-184</link>
		<dc:creator>Pierre-Emmanuel Fringant</dc:creator>
		<pubDate>Wed, 30 Apr 2008 17:59:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.formation-cakephp.com/31/interface-dadministration-dun-site-cakephp-avec-le-composant-auth#comment-184</guid>
		<description>Ce genre d'erreur vient souvent d'un espace qui traîne avant ou après un &lt;?php ... ?&gt;

Est-ce que tu obtiens aussi cette erreur quand tu vas à la racine '/' directement, sans passer par la déconnexion ?</description>
		<content:encoded><![CDATA[<p>Ce genre d&#8217;erreur vient souvent d&#8217;un espace qui traîne avant ou après un < ?php ... ?></p>
<p>Est-ce que tu obtiens aussi cette erreur quand tu vas à la racine &#8216;/&#8217; directement, sans passer par la déconnexion ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Chris</title>
		<link>http://www.formation-cakephp.com/31/interface-dadministration-dun-site-cakephp-avec-le-composant-auth#comment-183</link>
		<dc:creator>Chris</dc:creator>
		<pubDate>Wed, 30 Apr 2008 16:12:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.formation-cakephp.com/31/interface-dadministration-dun-site-cakephp-avec-le-composant-auth#comment-183</guid>
		<description>PB DE DECONNEXION !

Superbe tutoriel. D'autant plus utile que l'information est si difficile à trouver à travers tous ces blogs de bakers.

Je me suis construit une mini appli en suivant pas à pas ton article. Tout fonctionne à merveille sauf la déconnexion. Impossible de réobtenir la page d'accueil par défaut.

Dans le beforeFilter, j'ai bien spécifié :
$this-&#62;Auth-&#62;logoutRedirect = '/';

et ma fonction logout est la même que la tienne.

Mais j'obtiens une page blanche avec le message de déconnection (de la fonction logout), mais avec un plantage de la redirection :


Vous êtes maintenant déconnecté.

Warning (2): Cannot modify header information - ...

Une expérience à ce sujet de ton côté ?</description>
		<content:encoded><![CDATA[<p>PB DE DECONNEXION !</p>
<p>Superbe tutoriel. D&#8217;autant plus utile que l&#8217;information est si difficile à trouver à travers tous ces blogs de bakers.</p>
<p>Je me suis construit une mini appli en suivant pas à pas ton article. Tout fonctionne à merveille sauf la déconnexion. Impossible de réobtenir la page d&#8217;accueil par défaut.</p>
<p>Dans le beforeFilter, j&#8217;ai bien spécifié :<br />
$this-&gt;Auth-&gt;logoutRedirect = &#8216;/&#8217;;</p>
<p>et ma fonction logout est la même que la tienne.</p>
<p>Mais j&#8217;obtiens une page blanche avec le message de déconnection (de la fonction logout), mais avec un plantage de la redirection :</p>
<p>Vous êtes maintenant déconnecté.</p>
<p>Warning (2): Cannot modify header information - &#8230;</p>
<p>Une expérience à ce sujet de ton côté ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Avairet</title>
		<link>http://www.formation-cakephp.com/31/interface-dadministration-dun-site-cakephp-avec-le-composant-auth#comment-136</link>
		<dc:creator>Avairet</dc:creator>
		<pubDate>Wed, 09 Apr 2008 09:17:39 +0000</pubDate>
		<guid isPermaLink="false">http://www.formation-cakephp.com/31/interface-dadministration-dun-site-cakephp-avec-le-composant-auth#comment-136</guid>
		<description>Bon, j'ai réussi en faisant dans mon contrôleur :

[code]
			$errors = $this-&#62;validateErrors($this-&#62;Administrateur);
			if ($errors === false) {
				$this-&#62;data['Administrateur']['passe'] = $this-&#62;Auth-&#62;password($this-&#62;data['Administrateur']['mot_passe']);
			}
			$this-&#62;Administrateur-&#62;create();
			if ($this-&#62;Administrateur-&#62;save($this-&#62;data)) 
[/code]

La description dans l'Api de Controller::validateErrors() n'est pas claire et je ne pensais pas qu'on pouvait faire cette vérif avant $this-&#62;Model-&#62;save()</description>
		<content:encoded><![CDATA[<p>Bon, j&#8217;ai réussi en faisant dans mon contrôleur :</p>
<p>[code]<br />
			$errors = $this-&gt;validateErrors($this-&gt;Administrateur);<br />
			if ($errors === false) {<br />
				$this-&gt;data['Administrateur']['passe'] = $this-&gt;Auth-&gt;password($this-&gt;data['Administrateur']['mot_passe']);<br />
			}<br />
			$this-&gt;Administrateur-&gt;create();<br />
			if ($this-&gt;Administrateur-&gt;save($this-&gt;data))<br />
[/code]</p>
<p>La description dans l&#8217;Api de Controller::validateErrors() n&#8217;est pas claire et je ne pensais pas qu&#8217;on pouvait faire cette vérif avant $this-&gt;Model-&gt;save()</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Avairet</title>
		<link>http://www.formation-cakephp.com/31/interface-dadministration-dun-site-cakephp-avec-le-composant-auth#comment-135</link>
		<dc:creator>Avairet</dc:creator>
		<pubDate>Tue, 08 Apr 2008 09:54:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.formation-cakephp.com/31/interface-dadministration-dun-site-cakephp-avec-le-composant-auth#comment-135</guid>
		<description>Mes antislashs ne passent pas... donc je disais que la chaîne sauvegardé était une suite de \ \ \ (antislash0 antislash0 antislash0)</description>
		<content:encoded><![CDATA[<p>Mes antislashs ne passent pas&#8230; donc je disais que la chaîne sauvegardé était une suite de \ \ \ (antislash0 antislash0 antislash0)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Avairet</title>
		<link>http://www.formation-cakephp.com/31/interface-dadministration-dun-site-cakephp-avec-le-composant-auth#comment-134</link>
		<dc:creator>Avairet</dc:creator>
		<pubDate>Tue, 08 Apr 2008 09:41:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.formation-cakephp.com/31/interface-dadministration-dun-site-cakephp-avec-le-composant-auth#comment-134</guid>
		<description>Ben oui j'avais bien précisé être dans beforeSave() ;o))

Je ne souhaite pas faire trop de cuisine de validation dans le contrôleur, j'estime que ce n'est pas le meilleur endroit pour le faire (sinon, pourquoi mettre le tableau $validate dans le modèle ?).

Bon, même avec ta solution sha1, cela ne fonctionne pas ! Je n'ai plus de message d'erreur PHP, mais le passe sauvegardé est encore une suite de "" !?</description>
		<content:encoded><![CDATA[<p>Ben oui j&#8217;avais bien précisé être dans beforeSave() ;o))</p>
<p>Je ne souhaite pas faire trop de cuisine de validation dans le contrôleur, j&#8217;estime que ce n&#8217;est pas le meilleur endroit pour le faire (sinon, pourquoi mettre le tableau $validate dans le modèle ?).</p>
<p>Bon, même avec ta solution sha1, cela ne fonctionne pas ! Je n&#8217;ai plus de message d&#8217;erreur PHP, mais le passe sauvegardé est encore une suite de &#8220;&#8221; !?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Pierre-Emmanuel Fringant</title>
		<link>http://www.formation-cakephp.com/31/interface-dadministration-dun-site-cakephp-avec-le-composant-auth#comment-133</link>
		<dc:creator>Pierre-Emmanuel Fringant</dc:creator>
		<pubDate>Tue, 08 Apr 2008 09:36:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.formation-cakephp.com/31/interface-dadministration-dun-site-cakephp-avec-le-composant-auth#comment-133</guid>
		<description>Arf, je n'avais pas lu que tu faisais cela dans le beforeSave...  Fais plutôt tout ça dans le contrôleur. Si tu tiens vraiment à le faire dans le beforeSave du modèle, il faut que tu hash le password à la main :
&lt;code&gt;$this-&gt;data['passe'] = sha1(Configure::read('Security.salt').$this-&gt;data['mot_passe']);&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p>Arf, je n&#8217;avais pas lu que tu faisais cela dans le beforeSave&#8230;  Fais plutôt tout ça dans le contrôleur. Si tu tiens vraiment à le faire dans le beforeSave du modèle, il faut que tu hash le password à la main :<br />
<code>$this->data['passe'] = sha1(Configure::read(&#8217;Security.salt&#8217;).$this->data['mot_passe']);</code></p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Avairet</title>
		<link>http://www.formation-cakephp.com/31/interface-dadministration-dun-site-cakephp-avec-le-composant-auth#comment-132</link>
		<dc:creator>Avairet</dc:creator>
		<pubDate>Tue, 08 Apr 2008 09:15:37 +0000</pubDate>
		<guid isPermaLink="false">http://www.formation-cakephp.com/31/interface-dadministration-dun-site-cakephp-avec-le-composant-auth#comment-132</guid>
		<description>Désolé, c'est toujours pas bon !

"Undefined property:  Administrateur::$Administrateur "

et 

"Trying to get property of non-object"

Mais tout cela me semble logique : on ne peut pas accéder à un component depuis le modèle, en tout cas pas de manière aussi simple...</description>
		<content:encoded><![CDATA[<p>Désolé, c&#8217;est toujours pas bon !</p>
<p>&#8220;Undefined property:  Administrateur::$Administrateur &#8221;</p>
<p>et </p>
<p>&#8220;Trying to get property of non-object&#8221;</p>
<p>Mais tout cela me semble logique : on ne peut pas accéder à un component depuis le modèle, en tout cas pas de manière aussi simple&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Pierre-Emmanuel Fringant</title>
		<link>http://www.formation-cakephp.com/31/interface-dadministration-dun-site-cakephp-avec-le-composant-auth#comment-131</link>
		<dc:creator>Pierre-Emmanuel Fringant</dc:creator>
		<pubDate>Tue, 08 Apr 2008 09:08:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.formation-cakephp.com/31/interface-dadministration-dun-site-cakephp-avec-le-composant-auth#comment-131</guid>
		<description>Je suis allé trop vite :
&lt;code&gt;$this-&gt;Administrateur-&gt;data[’passe’] = $this-&gt;Administrateur-&gt;Auth-&gt;password($this-&gt;Administrateur-&gt;data[’mot_passe’]);&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p>Je suis allé trop vite :<br />
<code>$this->Administrateur->data[’passe’] = $this->Administrateur->Auth->password($this->Administrateur->data[’mot_passe’]);</code></p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Avairet</title>
		<link>http://www.formation-cakephp.com/31/interface-dadministration-dun-site-cakephp-avec-le-composant-auth#comment-130</link>
		<dc:creator>Avairet</dc:creator>
		<pubDate>Tue, 08 Apr 2008 08:29:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.formation-cakephp.com/31/interface-dadministration-dun-site-cakephp-avec-le-composant-auth#comment-130</guid>
		<description>Désolé, cela ne fonctionne pas... 

"Fatal error: Call to a member function password() on a non-object"

En fait c'est normal, dans mon modèle, il ne connait pas le component Auth !</description>
		<content:encoded><![CDATA[<p>Désolé, cela ne fonctionne pas&#8230; </p>
<p>&#8220;Fatal error: Call to a member function password() on a non-object&#8221;</p>
<p>En fait c&#8217;est normal, dans mon modèle, il ne connait pas le component Auth !</p>
]]></content:encoded>
	</item>
</channel>
</rss>
