Pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter, inscrivez-vous gratuitement !

 

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2004
    Messages
    1 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : mai 2004
    Messages : 1 379
    Points : 775
    Points
    775

    Par défaut Problème de chargement du menu après connection

    Bonjour à tous

    Dans le but de procéder à la migration de notre application vers la nouvelle version du Framework. j'ai tenté en local un test avant de passer a la migration.
    Mais la j'ai soucis lorsque je me connecte je n'arrive plus a voir le menu ? je ne vois pas ou commencer à investiguer ?

    merci de m'aiguillé !

    code de verification du mot de passe a la connection :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    private function checkLoginPass(){
    		//si le formulaire n'est pas envoye on s'arrete la
    		if(!_root::getRequest()->isPost() ){
    			return null;
    		}
     
    		$sLogin=_root::getParam('login');
    		$sPassword=_root::getParam('password');
     
    		if(strlen($sPassword) > $this->maxPasswordLength){
    			return 'Mot de passe trop long';
    		}
     
    		//on stoque les mots de passe hashe dans la classe model_utilisateurs
    		$sHashPassword=model_utilisateurs::getInstance()->hashPassword($sPassword);
    		$tAccount=model_utilisateurs::getInstance()->getListAccount();
     
     
    //gestion du compte avec verification si bloque apres 3 tentatives ou pas
    // verification si le compte est bloque
     
               if(isset($tAccount[$sLogin]) ){
     
               list($sAccountHashPassword, $oAccountFound) = each($tAccount[$sLogin]);
               if($oAccountFound->statut_compte > 3){
                   return 'Compte bloquee ! Contacter Administrateur';
               }
                }
               if(!_root::getAuth()->checkLoginPass($tAccount,$sLogin,$sHashPassword)){
     
               //on incremente le nombre d'erreur
               $oAccountFound->statut_compte=(int)$oAccountFound->statut_compte+1;
               $oAccountFound->save();
               return 'Mauvais login/mot de passe';
           }else{
               //on peut annuler le nombre de tentatives manquees quand elles sont superieur a 0 si l'utilisateur entre ses bons identifiants
               if($oAccountFound->statut_compte > 0 ){
                   $oAccountFound->statut_compte=0;
                   $oAccountFound->save();
               }
           } 
     
           _root::redirect('default::index');
     
    	}
    code de la page default
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php 
    class module_default extends abstract_module{
     
    	public function before(){
    		$this->oLayout=new _layout('bootstrap');
            $this->oLayout->addModule('menu','menu_depart::index'); //// le menu est bien chargé ici ??
          	}

    je cherche toujours

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2004
    Messages
    1 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : mai 2004
    Messages : 1 379
    Points : 775
    Points
    775

    Par défaut

    en avancant j'ai revu le code de mon menu que voici :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    <?php
    Class module_menu_depart extends abstract_moduleembedded{
    		
    	public function _index(){
    		
    		$tLink=array(
    			
    'Acceuil' => 'default::index',
    
    'Ressources' => array(
    				'Ecoles' => 't_mesecoles::list',
    				'Filieres' => 't_mesfilieres::list',
    				'Niveau' => 't_mesniveaux::list',
    				 ),
    'Etudiants' => array(
    				'Recherche Globale' => 't_mesinfos::list',
    				//'Recherche Ecole' => 't_mesinfos::list',
    				 ),
    'Examens' => array(
    				'Resulats Gblobaux' => 't_mesresultats::list',
    				//'Resultats Détaillés' => 't_mesresultats::list',
    				 ),	
    'Importation' => array(
    				'Etudiants' => 't_mesresultats::list',
    				//'Resultats Globaux' => 't_mesresultats::list',
    				//'Resultats Détailles' => 't_mesresultats::list',
    				//'Comptes' => 't_mesresultats::list',
    				 ),		
    'Utilisateurs' => array(
    				'Liste' => 'utilisateurs::list',
    				'Gestion' => 'rightsManager::index',
    				 ),			 
    'Voir Log' => 'tracelogs::list',
    'Se deconnecter' => 'auth::logout',
    
    		);
    
    //dans ce code juste en bas j'ajoute le code de restriction du menu au users logués :
    //code emprunter sur le forum
    
    foreach($tLink as $sLabelPri =>$sLink){
    		
      if(is_array($sLink)){ 
    			
    	//on commence en ce disant qu'on a pas acces a ces sous menus
    		$bAllowed=false;
    			
    			foreach($sLink as $sLabelSec =>$sSousMenu){
    		
    				if(!_root::getAcl()->can('Access',$sSousMenu)){
    						unset($tLink[$sLabelPri][$sLabelSec]);
    					}else{
    						//si on a au moins un sous menus d'autorise, on va afficher le menu
    						$bAllowed=true;
    						
    					}
    		
    				}
    				
    				if($bAllowed==false){
    					unset($tLink[$sLabelPri]);
    				}
    		
    			} else {
    				if(!_root::getAcl()->can('Access',$sLink)){
    						unset($tLink[$sLabelPri]);
    				}
    		
    			}
    			
    			}
    
            $oView=new _view('menu_depart::index');
    		$oView->tLink=$tLink;
    		
    		return $oView;
    	}
    }

    en supprimant le code en rouge qui permet de restreindre le menu aux utilisateurs connectés. le menu réapparaît a nouveau. je pense que le problème se trouve la ! mais je n'arrive pas a voir !

  3. #3
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Ingénieur développement
    Inscrit en
    décembre 2006
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement
    Secteur : Finance

    Informations forums :
    Inscription : décembre 2006
    Messages : 5 128
    Points : 19 198
    Points
    19 198
    Billets dans le blog
    17

    Par défaut

    On dirait un soucis de session, il faut verifier si vous etes tojours connecté, et auquel cas est-ce que vous avez bien charger les droits de votre utilisateur ?
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2004
    Messages
    1 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : mai 2004
    Messages : 1 379
    Points : 775
    Points
    775

    Par défaut

    je pense que je suis toujours connecté, je le vérifie en forçant dans la barre d’adresse http://x.x.x.x/mkframework/data/gene...ndex.php?:nav=rightsManager::index et la je vois toutes les habilitations de l'utilisateurs sur le menu.

    Nom : CaptureMK.PNG
Affichages : 21
Taille : 29,5 Ko
    mais le menu en question ne s'affiche toujours pas

    Nom : CaptureBBB.PNG
Affichages : 20
Taille : 13,7 Ko
    et tout est rouge dans la barre de Debug !

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2004
    Messages
    1 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : mai 2004
    Messages : 1 379
    Points : 775
    Points
    775

    Par défaut

    comment vérifier en faite que ce code fonctionne correctement ?

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    foreach($tLink as $sLabelPri =>$sLink){
     
    			if(is_array($sLink)){ 
     
    				//on commence en ce disant qu'on a pas acces a ces sous menus
    				$bAllowed=false;
     
    				foreach($sLink as $sLabelSec =>$sSousMenu){
     
    					if(!_root::getAcl()->can('Access',$sSousMenu)){
    						unset($tLink[$sLabelPri][$sLabelSec]);
    					}else{
    						//si on a au moins un sous menus d'autorise, on va afficher le menu
    						$bAllowed=true;
     
    					}
    				}
     
    				if($bAllowed==false){
    					unset($tLink[$sLabelPri]);
    				}
     
    			} else {
    				if(!_root::getAcl()->can('Access',$sLink)){
    						unset($tLink[$sLabelPri]);
    				}
     
    			}	
     
    		}

    Merci

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2004
    Messages
    1 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : mai 2004
    Messages : 1 379
    Points : 775
    Points
    775

    Par défaut

    Bonjour Imikado

    pour essaiyer de comprendre j'ai donc mis un var_dump($tLink) à la sortie de la boucle

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    foreach($tLink as $sLabelPri =>$sLink){
    		
    			if(is_array($sLink)){ 
    			
    				//on commence en ce disant qu'on a pas acces a ces sous menus
    				$bAllowed=false;
    			
    				foreach($sLink as $sLabelSec =>$sSousMenu){
    		
    					if(!_root::getAcl()->can('Access',$sSousMenu)){
    						unset($tLink[$sLabelPri][$sLabelSec]);
    						
    					}else{
    						//si on a au moins un sous menus d'autorise, on va afficher le menu
    						$bAllowed=true;
    						
    					}
    		
    				}
    				
    				if($bAllowed==false){
    					unset($tLink[$sLabelPri]);
    				}
    		
    			} else {
    				if(!_root::getAcl()->can('Access',$sLink)){
    					unset($tLink[$sLabelPri]);
    				}
    		
    			}
    	
    			var_dump($tLink);
    		}	
    
            $oView=new _view('menu_depart::index');
    		$oView->tLink=$tLink;
    		return $oView;
    	}
    }

    comme résultat le tableau est vide:
    C:\wamp\www\mkframework\data\genere\rustaconnect\module\menu_depart\main.php:71:
    array (size=0)
    empty
    j'en conclu sauf erreur de ma part qu'il y un problème au niveau du code parce que l’utilisateur en question a droit à tous les options du menu.
    je cherche toujours

    Merci

  7. #7
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Ingénieur développement
    Inscrit en
    décembre 2006
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement
    Secteur : Finance

    Informations forums :
    Inscription : décembre 2006
    Messages : 5 128
    Points : 19 198
    Points
    19 198
    Billets dans le blog
    17

    Par défaut

    en regardant votre methode de connexion, je ne vois pas à quel moment vous "charger" les droits

    a moins que ce soir dans la methode checkLoginPass, vous pouvez la poster ?

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    private function checkLoginPass(){
    		//si le formulaire n'est pas envoye on s'arrete la
    		if(!_root::getRequest()->isPost() ){
    			return null;
    		}
     
    		$sLogin=_root::getParam('login');
    		$sPassword=_root::getParam('password');
     
    		if(strlen($sPassword) > $this->maxPasswordLength){
    			return 'Mot de passe trop long';
    		}
     
    		//on stoque les mots de passe hashe dans la classe model_utilisateurs
    		$sHashPassword=model_utilisateurs::getInstance()->hashPassword($sPassword);
    		$tAccount=model_utilisateurs::getInstance()->getListAccount();
     
     
    //gestion du compte avec verification si bloque apres 3 tentatives ou pas
    // verification si le compte est bloque
     
               if(isset($tAccount[$sLogin]) ){
     
               list($sAccountHashPassword, $oAccountFound) = each($tAccount[$sLogin]);
               if($oAccountFound->statut_compte > 3){
                   return 'Compte bloquee ! Contacter Administrateur';
               }
                }
               if(!_root::getAuth()->checkLoginPass($tAccount,$sLogin,$sHashPassword)){
     
               //on incremente le nombre d'erreur
               $oAccountFound->statut_compte=(int)$oAccountFound->statut_compte+1;
               $oAccountFound->save();
               return 'Mauvais login/mot de passe';
           }else{
               //on peut annuler le nombre de tentatives manquees quand elles sont superieur a 0 si l'utilisateur entre ses bons identifiants
               if($oAccountFound->statut_compte > 0 ){
                   $oAccountFound->statut_compte=0;
                   $oAccountFound->save();
               }
           } 
     
           _root::redirect('default::index');
     
    	}
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2004
    Messages
    1 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : mai 2004
    Messages : 1 379
    Points : 775
    Points
    775

    Par défaut

    Citation Envoyé par imikado Voir le message
    en regardant votre methode de connexion, je ne vois pas à quel moment vous "charger" les droits
    a moins que ce soir dans la methode checkLoginPass, vous pouvez la poster ?
    Je ne comprend pas trop la question mais voici le code de la méthode checkLoginPass,

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    	private function checkLoginPass(){
    		//si le formulaire n'est pas envoye on s'arrete la
    		if(!_root::getRequest()->isPost() ){
    			return null;
    		}
     
    		$sLogin=_root::getParam('login');
    		$sPassword=_root::getParam('password');
     
    		if(strlen($sPassword) > $this->maxPasswordLength){
    			return 'Mot de passe trop long';
    		}
     
    		//on stoque les mots de passe hashe dans la classe model_utilisateurs
    		$sHashPassword=model_utilisateurs::getInstance()->hashPassword($sPassword);
    		$tAccount=model_utilisateurs::getInstance()->getListAccount();
     
     
    //gestion du compte avec verification si bloque apres 3 tentatives ou pas verification si le compte est bloque
     
               if(isset($tAccount[$sLogin]) ){
     
               list($sAccountHashPassword, $oAccountFound) = each($tAccount[$sLogin]);
               if($oAccountFound->statut_compte > 3){
                   return 'Compte bloquee ! Contacter Administrateur';
               }
                }
     
               if(!_root::getAuth()->checkLoginPass($tAccount,$sLogin,$sHashPassword)){
     
               //on incremente le nombre d'erreur
               $oAccountFound->statut_compte=(int)$oAccountFound->statut_compte+1;
               $oAccountFound->save();
               return 'Mauvais login/mot de passe';
           }else{
               //on peut annuler le nombre de tentatives manquees quand elles sont superieur a 0 si l'utilisateur entre ses bons identifiants
               if($oAccountFound->statut_compte > 0 ){
                   $oAccountFound->statut_compte=0;
                   $oAccountFound->save();
               }
           } 
     
            // fonction d'inscription en base de l'utilisteur connecté
           $this->mytraceuserconnect($sLogin);
            _root::redirect('default::index');
     
    	}

    Merci

  9. #9
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2004
    Messages
    1 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : mai 2004
    Messages : 1 379
    Points : 775
    Points
    775

    Par défaut

    Je pense avoir compris ! en faite tu avais raison en aucun moment je chargeais les droits.

    Je te propose le code qui marche juste pour jeter un coup d’œil et apporter des corrections ou bonne pratique si besoin :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    private function checkLoginPass(){
    		//si le formulaire n'est pas envoye on s'arrete la
    		if(!_root::getRequest()->isPost() ){
    			return null;
    		}
    
    		$sLogin=_root::getParam('login');
    		$sPassword=_root::getParam('password');
    
    		if(strlen($sPassword) > $this->maxPasswordLength){
    			return 'Mot de passe trop long';
    		}
    
    		//on stoque les mots de passe hashe dans la classe model_utilisateurs
    		$sHashPassword=model_utilisateurs::getInstance()->hashPassword($sPassword);
    		$tAccount=model_utilisateurs::getInstance()->getListAccount();
    		
    		
              //gestion du compte avec verification si bloque apres 3 tentatives ou pas 
              
              // verification si le compte est bloque
               
               if(isset($tAccount[$sLogin]) ){
          
               list($sAccountHashPassword, $oAccountFound) = each($tAccount[$sLogin]);
               if($oAccountFound->statut_compte > 3){
                   return 'Compte bloquee ! Contacter Administrateur';
               }
                }
                
               if(!_root::getAuth()->checkLoginPass($tAccount,$sLogin,$sHashPassword)){
          
               //on incremente le nombre d'erreur
               $oAccountFound->statut_compte=(int)$oAccountFound->statut_compte+1;
               $oAccountFound->save();
               return 'Mauvais login/mot de passe';
           }else{
               //on peut annuler le nombre de tentatives manquees quand elles sont superieur a 0 si l'utilisateur entre ses bons identifiants
               if($oAccountFound->statut_compte > 0 ){
                   $oAccountFound->statut_compte=0;
                   $oAccountFound->save();
               }
           } 
           
           
           //chargement des droits a la fin des controles
          	$oUser=_root::getAuth()->getAccount();
            model_rightsManager::getInstance()->loadForUser($oUser);
            	
            // fonction d'inscription en base de l'utilisteur connecté
           $this->mytraceuserconnect($sLogin);
            _root::redirect('default::index');
    		
    	}

    Merci beaucoup !

  10. #10
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Ingénieur développement
    Inscrit en
    décembre 2006
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement
    Secteur : Finance

    Informations forums :
    Inscription : décembre 2006
    Messages : 5 128
    Points : 19 198
    Points
    19 198
    Billets dans le blog
    17

    Par défaut

    C'est bon nikel

    Le code est correct pour moi
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Compiler] Problème de chargement de fichiers .MAT et .AVI après compilation
    Par Xen956 dans le forum MATLAB
    Réponses: 1
    Dernier message: 01/02/2015, 16h56
  2. Réponses: 2
    Dernier message: 14/10/2013, 02h20
  3. problème de chargement après déconnexion
    Par vince29 dans le forum Zend Framework
    Réponses: 4
    Dernier message: 27/03/2012, 13h34
  4. Réponses: 15
    Dernier message: 28/10/2011, 15h45
  5. Réponses: 18
    Dernier message: 21/08/2010, 08h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo