Bon j'ai pas mal retourné le problème.
Voila en gros ce qui se passe lors de la connexion d'un utilisateurs:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
//Dans LoginController.php
indexAction() {
//Si je comprends ma session débute Ici
$authNamespace = new Zend_Session_Namespace('Zend_Auth');
//Je passe les details
//J'affiche le formulaire
//Si isPost je test le Mdp
if ($authAuthenticate->isValid()) {
$storage = Zend_Auth::getInstance()->getStorage();
//Je commence à renseigner les données de ma session
$storage->write ( $authAdapter->getResultRowObject ( null, array('UTILISATEUR_password') ) );
$id_utilisateur = $authAdapter->getResultRowObject (null)->UTILISATEUR_id_utilisateur;
Utilisateurs::initParam($id_utilisateur) ;
/*Puis je redirige l'utilisateur vers sa page*/
}
}
//Dans UtilisateurController.php
static function initParam($id_utilisateur) {
//CECI donne les anciennes valeurs des préférences Utilisateurs
var_dump($_SESSION['Zend_Auth']['storage']);
$utilisateur = new Utilisateurs();
$roles = $utilisateur->getRole($id_utilisateur);//On récupére les roles de l'utilsateur
$prefs = $utilisateur->getPreferences($id_utilisateur);//On récupére les preferences de l'utilsateur
//On recupére les info de session
$storage = Zend_Auth::getInstance()->getStorage();
$infos_session = $storage->read();
//On ajoute aux info utilisateur un tableau contenant les roles de cette utilisateur
$infos_session->{'UTILISATEUR_roles'} = null;
$infos_session->{'UTILISATEUR_roles'} = $roles;// Les roles sont gérer avec ACL
$preferences = array();
if(count($prefs)>0) {
foreach ($prefs as $pref) {
$preferences[$pref['PREFERENCE_libelle']] = $pref['PREFERENCE_valeur'] ;
}
}
//On ajoute aux info utilisateur un tableau contenant les preferences
$infos_session->{'UTILISATEUR_preferences'} = null;
$infos_session->{'UTILISATEUR_preferences'} = $preferences;
$storage->clear() ;
$storage->write ( $infos_session );
//CECI donne bien les nouvelle valeurs de prefrerences donc j'en conclus
//que ma session a bien été mise à jour ???
var_dump($_SESSION['Zend_Auth']['storage']);
} |
Alors j'ai cru comprendre en regardant le constructeur de Zend_Session_Namespace que c'était lui qui initialisé la Session avec
Zend_Session::start(true);
.Est ce normal de démarrer ainsi une session avec Zend ? Ne dois-je pas utiliser Zend_Session::start(); ?
A la validation de mon formulaire de paramétrage j'appel initParam() pour mettre à jour mes paramètres en session.
Le var_dump au début de initParam() m'affiche les anciennes valeur et le var_dump à la fin de initParam() m'afiche les nouvelle valeurs que j'ai saisie donc ma session a bien du se mettre à jour. Cependant si je réaffiche la page et que j'affiche ma session je peux voir que les paramétres sont revenu à leurs anciennes valeurs. 
Dans mon formulaire d’édition des paramètres je fait directement appel à initParam() pour mettre à jour ma les infos de ma session. Est ce qu'il ne faudrait pas que je tue et que je recréé ma session ?
Je sais plus trop comment aborder le problème...
Partager