Navigation

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

MkFramework Discussion :

Problème de chargement du menu après connection


Sujet :

MkFramework

  1. #1
    Membre éclairé
    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
    vous connaitrez la vérité et la vérité vous affranchira !
    windev/firebird/Mkframework
    vous devez tous l'éssayer impressionnant pour Débutant, Confirmé et Expert
    http://mkframework.com/accueil.html
    http://sqlmanagerx.com/

  2. #2
    Membre éclairé
    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 !
    vous connaitrez la vérité et la vérité vous affranchira !
    windev/firebird/Mkframework
    vous devez tous l'éssayer impressionnant pour Débutant, Confirmé et Expert
    http://mkframework.com/accueil.html
    http://sqlmanagerx.com/

  3. #3
    Rédacteur

    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é
    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.


    mais le menu en question ne s'affiche toujours pas


    et tout est rouge dans la barre de Debug !
    vous connaitrez la vérité et la vérité vous affranchira !
    windev/firebird/Mkframework
    vous devez tous l'éssayer impressionnant pour Débutant, Confirmé et Expert
    http://mkframework.com/accueil.html
    http://sqlmanagerx.com/

  5. #5
    Membre éclairé
    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
    vous connaitrez la vérité et la vérité vous affranchira !
    windev/firebird/Mkframework
    vous devez tous l'éssayer impressionnant pour Débutant, Confirmé et Expert
    http://mkframework.com/accueil.html
    http://sqlmanagerx.com/

  6. #6
    Membre éclairé
    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
    vous connaitrez la vérité et la vérité vous affranchira !
    windev/firebird/Mkframework
    vous devez tous l'éssayer impressionnant pour Débutant, Confirmé et Expert
    http://mkframework.com/accueil.html
    http://sqlmanagerx.com/

  7. #7
    Rédacteur

    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é
    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
    vous connaitrez la vérité et la vérité vous affranchira !
    windev/firebird/Mkframework
    vous devez tous l'éssayer impressionnant pour Débutant, Confirmé et Expert
    http://mkframework.com/accueil.html
    http://sqlmanagerx.com/

  9. #9
    Membre éclairé
    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 !
    vous connaitrez la vérité et la vérité vous affranchira !
    windev/firebird/Mkframework
    vous devez tous l'éssayer impressionnant pour Débutant, Confirmé et Expert
    http://mkframework.com/accueil.html
    http://sqlmanagerx.com/

  10. #10
    Rédacteur

    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

###raw>template_hook.ano_emploi###