IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 avec la gestion des droits


Sujet :

MkFramework

  1. #1
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut Probléme avec la gestion des droits
    Bonsoir Imikado

    En suivant pas a pas la tuto de gestion des droits, je bute sur le problème suivant :
    sur cette page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://127.0.0.1/mkframework/data/genere/searchrusta/public/index.php?:nav=rightsManager::new
    Quand je clique sur le bouton Ajouter pour la création des groupes j'ai un message d'erreur

    Undefined property: stdClass::$id
    #0 C:\wamp\www\mkframework\data\genere\searchrusta\module\rightsManager\main.php(133): exception_error_handler(8, 'Undefined prope...', 'C:\\wamp\\www\\mkf...', 133, Array)
    #1 C:\wamp\www\mkframework\data\genere\searchrusta\module\rightsManager\main.php(89): module_rightsManager->processNew()
    #2 C:\wamp\www\mkframework\lib\framework\class_root.php(263): module_rightsManager->_new()
    #3 C:\wamp\www\mkframework\data\genere\searchrusta\public\index.php(48): _root->run()
    #4 {main}
    Capture d'écran de la page d'erreur
    Nom : CaptureErreur.JPG
Affichages : 158
Taille : 76,8 Ko

    J'ai bien envie de modifié le code mais j'hésite. je comprend pas trop bien

    Merci
    PS: désolé pour l'image en dessous rien a voir avec ma question. j'ai pas la main pour la supprimer.
    Images attachées Images attachées  

  2. #2
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Il y a un problème sur la clé de la table groupe.
    quel est le champ clé ?
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  3. #3
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut
    Bonjour
    Le champ clé de la table groupe est GRP_PKEY.
    Voici mon MLD sous Firebird
    Nom : modele sql.JPG
Affichages : 180
Taille : 85,0 Ko
    Merci

  4. #4
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Pouvez-vous modifier la ligne 132 pour
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $oExamplemodel->FKGROUPES=$oGroup->GRP_PKEY;

    Je vas voir pour corriger le générateur
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  5. #5
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    En regardant et retestant, j'ai l'impession que l'on a le soucis qu'avec Firebird
    Je pense qu'il y a un soucis dans l'alias: essayez plutot de remplacer $oGroup->id; par $oGroup->ID; (en majuscule)
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  6. #6
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut
    Je viens de modifier les lignes suivantes en passant id en Majuscule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $oExamplemodel->FKGROUPES=$oGroup->ID;
    $oExamplemodel->FKVERBES=$oAction->ID;
    $oExamplemodel->FKELEMENTS=$oItem->ID;
    A l'enregistrement des permissions je n'ai plus le message d'erreur.
    en retour j'ai problème d'affichage :
    les colonnes Groupe, Action, Element restent vides.

    Nom : listeaffichage.JPG
Affichages : 142
Taille : 28,9 Ko

    Voici une capture des données de mes tables Droits et Elements :
    Contenu table droit:
    Nom : table Droit.JPG
Affichages : 145
Taille : 17,6 Ko

    Contenu table Elements:
    Nom : table Element.JPG
Affichages : 144
Taille : 20,4 Ko

    merci

  7. #7
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Ca règle le problème des FK, en revanche il y a un soucis à l'enregistrement des éléments.

    Que contient finalement les tables groupes, items...
    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 éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut
    Voici le contenu des tables Groupes, items, verbes.
    Table groupe
    Nom : Table groupe.JPG
Affichages : 139
Taille : 13,3 Ko

    Table element
    Nom : table Element.JPG
Affichages : 128
Taille : 20,4 Ko

    Table verbe
    Nom : Table verbe.JPG
Affichages : 155
Taille : 13,5 Ko
    merci

  9. #9
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut
    J'ai fais fi de cet problème d'affichage et je me suis reloguer avec mon utilisateur créé
    J'ai un message d'erreur juste a la connexion :
    Undefined property: stdClass::$actionName
    #0 C:\wamp\www\mkframework\data\genere\searchrusta\model\model_rightsManager.php(113): exception_error_handler(8, 'Undefined prope...', 'C:\\wamp\\www\\mkf...', 113, Array)
    #1 C:\wamp\www\mkframework\data\genere\searchrusta\module\auth\main.php(48): model_rightsManager->loadForUser(Object(row_UTILISATEURS))
    #2 C:\wamp\www\mkframework\data\genere\searchrusta\module\auth\main.php(16): module_auth->checkLoginPass()
    #3 C:\wamp\www\mkframework\lib\framework\class_root.php(263): module_auth->_login()
    #4 C:\wamp\www\mkframework\data\genere\searchrusta\public\index.php(48): _root->run()
    #5 {main}

    Detail:
    #0 C:\wamp\www\mkframework\data\genere\searchrusta\model\model_rightsManager.php (113)
    exception_error_handler( , 'Undefined property: stdClass::$actionName' , 'C:\wamp\www\mkframework\data\genere\searchrusta\model\model_rightsManager.php' , , Array ( [oUser] => row_UTILISATEURS Object ( [sClassModel:protected] => model_UTILISATEURS [_bChooseUpdate:abstract_row:private] => 1 [_tProperty:protected] => Array ( [UTI_PKEY] => 9 [UTI_LOGIN] => devalender [UTI_PASSWORD] => 3c61b282a6d6f648b27ea304450d8d13def3ea2f [FKGROUPES] => 9 ) [_tPropertyToUpdate:protected] => ) [tPermission] => Array ( [0] => stdClass Object ( [ACTIONNAME] => access [ITEMNAME] => default::index ) [1] => stdClass Object ( [ACTIONNAME] => access [ITEMNAME] => rightsManager::index ) [2] => stdClass Object ( [ACTIONNAME] => access [ITEMNAME] => auth::logout ) [3] => stdClass Object ( [ACTIONNAME] => access [ITEMNAME] => MESINFORMATIONS::frecherche ) ) [oPermission] => stdClass Object ( [ACTIONNAME] => access [ITEMNAME] => default::index ) ) )
    #1 C:\wamp\www\mkframework\data\genere\searchrusta\module\auth\main.php (48)
    model_rightsManager -> loadForUser( )
    #2 C:\wamp\www\mkframework\data\genere\searchrusta\module\auth\main.php (16)
    module_auth -> checkLoginPass( )
    #3 C:\wamp\www\mkframework\lib\framework\class_root.php (263)
    module_auth -> _login( )
    #4 C:\wamp\www\mkframework\data\genere\searchrusta\public\index.php (48)
    _root -> run( )
    #5 {main}
    Nom : ErreurLogin.JPG
Affichages : 150
Taille : 29,5 Ko

  10. #10
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Je pense que c'est toujours le meme probleme de majuscule

    Mettez les champs de la ligne concerné en majuscule svp
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  11. #11
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Ce qui donnera:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    _root::getACL()->allow($oPermission->ACTIONNAME,$oPermission->ITEMNAME);
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  12. #12
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut
    J'ai apporter la modification et je n'ai plus le message d'erreur.
    pour mon user bien qu'ayant les droits d’accès au menu, j'ai le menu qui ne s'affiche pas. j'ai jeté un coup d'oeil sur les permissions a partir de la barre de debug Voila ce que je vois es normale ?:
    Nom : permissions.JPG
Affichages : 116
Taille : 16,0 Ko

    Merci

  13. #13
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Non, il semble qu'il y a un soucis, pouvez-vous lister les permissions ?
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  14. #14
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut
    la liste des permissions ne s'affiche pas ! quand je vais sur cette page :
    http://127.0.0.1/mkframework/data/ge...Manager::index

    les permissions au niveau de ma base :
    Nom : Table des droits.JPG
Affichages : 149
Taille : 18,3 Ko

    http://127.0.0.1/mkframework/data/ge...Manager::index
    Affichage dans mon projet :
    on voit bien 4 lignes mais rien ne s'affiche.

    Nom : mkfram.JPG
Affichages : 128
Taille : 29,8 Ko

    Merci

  15. #15
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    C'est à cause du probleme des minuscule/majuscule des alias sous firebird:

    Modifier la classe model ainsi: (on passe les noms des alias en majuscule ACTIONNAME, ITEMNAME et GROUPNAME)
    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
     
    public function findAll(){
    		return $this->findMany('
    		SELECT 
    			Actions.ACT_name as ACTIONNAME , Items.IT_name as ITEMNAME
     , Groups.GRP_name as GROUPNAME
     , Permissions.PER_id
    		FROM Permissions
    			INNER JOIN Actions
    				ON Actions.ACT_id=Permissions.actions_id
    			INNER JOIN Items
    				 ON Items.IT_id=Permissions.items_id
    			INNER JOIN Groups
    				 ON Groups.GRP_id=Permissions.groups_id
    ');
    	}

    et la vue module/rightsmanger/view/index.php (on répercure le changement de nom de champ à l'affichage du tableau)
    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
     
    <?php
    /*
     rightsManager
     * 
     PER_id
     exampleActionName
     exampleElementName 
     * */
    ?>
    <h2>Liste des permissions</h2>
    <table class="tb_list">
    	<tr>
    		<th>Groupe</th>
    		<th>Action</th>
    		<th>Element</th>
    		<th></th>
    	</tr>
    	<?php if($this->tPermission):?>
    		<?php foreach($this->tPermission as $oPermission):?>
    		<tr <?php echo plugin_tpl::alternate(array('','class="alt"'))?>>
    			<td><?php echo $oPermission->GROUPNAME?></td>
    			<td><?php echo $oPermission->ACTIONNAME?></td>
    			<td><?php echo $oPermission->ITEMNAME?></td>
    			<td>
     
    				<a href="<?php echo $this->getLink('rightsManager::edit',array(
    										'id'=>$oPermission->PER_id
    									) 
    							)?>">Modifier</a>
    				|
    				<a href="<?php echo $this->getLink('rightsManager::delete',array(
    										'id'=>$oPermission->PER_id
    									) 
    							)?>">Supprimer</a>
    			</td>
    		</tr>	
    		<?php endforeach;?>
    	<?php else:?>
    		<tr>
    			<td colspan="5">Aucune ligne</td>
    		</tr>
    	<?php endif;?>
    </table>
    <p><a href="<?php echo $this->getLink('rightsManager::new') ?>">New</a></p>
     
    <h2>Liste des utilisateurs</h2>
    <table class="tb_list">
    	<tr>
    		<th>User</th>
    		<th>Groupe</th>
    		<th></th>
    	</tr>
    	<?php if($this->tUser):?>
    		<?php foreach($this->tUser as $oUser):?>
    		<tr <?php echo plugin_tpl::alternate(array('','class="alt"'))?>>
    			<td><?php echo $oUser->USR_login?></td>
    			<td><?php if(isset($this->tJoinGroup[$oUser->groups_id])):
    				echo $this->tJoinGroup[$oUser->groups_id];
    			 endif;?></td>
    			 <td><a href="<?php echo $this->getLink('rightsManager::editUser',array(
    										'id'=>$oUser->USR_id
    									) 
    							)?>">Modifier</a></td>
    		</tr>
    		<?php endforeach;?>
    	<?php else:?>
    		<tr>
    			<td colspan="3">Aucune ligne</td>
    		</tr>
    	<?php endif;?>
    </table>
    Vous devriez avoir un bon affichage ainsi
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  16. #16
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut
    je teste et je vous informe juste après.
    merci

  17. #17
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut
    Bonjour
    Toutes mes excuses pour le retard dans mon intervention.
    voici j'ai appliqué les dernières modifications et voici le résultat :
    Ici tout s'affiche correctement :

    Nom : LISTEPERMIS.JPG
Affichages : 126
Taille : 39,2 Ko

    Mais quand je fais un tour du coté de la barre de debug :
    voici ce que j'ai :

    Nom : BARRE DEBUG.JPG
Affichages : 120
Taille : 14,6 Ko

    Du coup quand je connecte un user je n'ai pas de menu affiché.

    Merci

  18. #18
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Vous pouvez me copier la classe model model_rightsmanager.php et également la classe module/auth/main.php

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

  19. #19
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut
    La classe model_rightsManager
    Code : 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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
     
    <?php
    class model_rightsManager extends abstract_model{
     
    	protected $sClassRow='row_rightsManager';
     
    	protected $sTable='DROITS';
    	protected $sConfig='firebirdExple';
     
    	protected $tId=array('DR_PKEY');
     
    	public static function getInstance(){
    		return self::_getInstance(__CLASS__);
    	}
     
    	public function findById($uId){
    		return $this->findOne('SELECT * FROM '.$this->sTable.' WHERE DR_PKEY=?',$uId );
    	}
    	public function findAll(){
    		return $this->findMany('
    		SELECT VERBES.VRB_NAME as ACTIONNAME , ELEMENTS.ELE_NAME as ITEMNAME
     , GROUPES.GRP_NAME as GROUPNAME
     , DROITS.DR_PKEY
    		FROM DROITS
    			INNER JOIN VERBES
    				ON VERBES.VRB_PKEY=DROITS.FKVERBES
    			INNER JOIN ELEMENTS
    				 ON ELEMENTS.ELE_PKEY=DROITS.FKELEMENTS
    			INNER JOIN GROUPES
    				 ON GROUPES.GRP_PKEY=DROITS.FKGROUPES
    ');
    	}
     
    	public function findListByGroup($group_id){
    		return $this->findManySimple('
    		SELECT 
    			VERBES.VRB_NAME as ACTIONNAME , ELEMENTS.ELE_NAME as ITEMNAME
    		FROM DROITS
    			INNER JOIN VERBES
    				ON VERBES.VRB_PKEY=DROITS.FKVERBES
    			INNER JOIN ELEMENTS
    				 ON ELEMENTS.ELE_PKEY=DROITS.FKELEMENTS
    		WHERE DROITS.FKGROUPES=?',$group_id);
    	}
     
    	public function insertGroup($sName){
    		$this->execute('INSERT INTO GROUPES (GRP_NAME) VALUES(?)',$sName);
    	}
    	public function insertAction($sName){
    		$this->execute('INSERT INTO VERBES (VRB_NAME) VALUES(?)',$sName);
    	}
    	public function insertItem($sName){
    		$this->execute('INSERT INTO ELEMENTS (ELE_NAME) VALUES(?)',$sName);
    	}
     
    	public function findGroupByName($sName){
    		return $this->findOneSimple('SELECT GRP_PKEY as ID FROM GROUPES WHERE GRP_NAME=?',$sName);
    	}
    	public function findActionByName($sName){
    		return $this->findOneSimple('SELECT VRB_PKEY as ID FROM VERBES WHERE VRB_NAME=?',$sName);
    	}
    	public function findItemByName($sName){
    		return $this->findOneSimple('SELECT ELE_PKEY as ID FROM ELEMENTS WHERE ELE_NAME=?',$sName);
    	}
     
    	public function findSelectGroup(){
    		$tItem=$this->findManySimple('SELECT GRP_PKEY,GRP_NAME FROM GROUPES');
    		$tSelect=array();
    		if($tItem){
    			foreach($tItem as $oItem){
    				$tSelect[ $oItem->GRP_PKEY ]=$oItem->GRP_NAME;
    			}
    		}
    		return $tSelect;
    	}
    	public function findSelectAction(){
    		$tItem=$this->findManySimple('SELECT VRB_PKEY,VRB_NAME FROM VERBES');
    		$tSelect=array();
    		if($tItem){
    			foreach($tItem as $oItem){
    				$tSelect[ $oItem->VRB_PKEY ]=$oItem->VRB_NAME;
    			}
    		}
    		return $tSelect;
    	}
    	public function findSelectItem(){
    		$tItem=$this->findManySimple('SELECT ELE_PKEY,ELE_NAME FROM ELEMENTS');
    		$tSelect=array();
    		if($tItem){
    			foreach($tItem as $oItem){
    				$tSelect[ $oItem->ELE_PKEY ]=$oItem->ELE_NAME;
    			}
    		}
    		return $tSelect;
    	}
     
    	public function findListUser(){
    		return $this->findManySimple('SELECT UTI_PKEY,UTI_LOGIN,FKGROUPES FROM UTILISATEURS');
    	}
    	public function findUserById($user_id){
    		return $this->findOneSimple('SELECT UTI_PKEY,UTI_LOGIN,FKGROUPES FROM UTILISATEURS WHERE UTI_PKEY=?',$user_id);
    	}
    	public function updateUserGroup($user_id,$group_id){
    		$this->execute('UPDATE UTILISATEURS SET FKGROUPES=? WHERE UTI_PKEY=?',$user_id,$group_id);
    	}
     
    	public function loadForUser($oUser){
    		//on purge
    		_root::getACL()->purge();
     
    		$tPermission=$this->findListByGroup($oUser->FKGROUPES);
    		if($tPermission){
    			foreach($tPermission as $oPermission){
    				_root::getACL()->allow($oPermission->ACTIONNAME,$oPermission->ITEMNAME);
    				//_root::getACL()->allow($oPermission->actionName,$oPermission->itemName);
    			}
    		}
    	}
     
    }
    class row_rightsManager extends abstract_row{
     
    	protected $sClassModel='model_rightsManager';
     
    	/*exemple jointure 
    	public function findAuteur(){
    		return model_auteur::getInstance()->findById($this->auteur_id);
    	}
    	*/
    	/*exemple test validation*/
    	private function getCheck(){
    		$oPluginValid=new plugin_valid($this->getTab());
    		/* renseigner vos check ici
    		$oPluginValid->isEqual('champ','valeurB','Le champ n\est pas &eacute;gal &agrave; '.$valeurB);
    		$oPluginValid->isNotEqual('champ','valeurB','Le champ est &eacute;gal &agrave; '.$valeurB);
    		$oPluginValid->isUpperThan('champ','valeurB','Le champ n\est pas sup&eacute; &agrave; '.$valeurB);
    		$oPluginValid->isUpperOrEqualThan('champ','valeurB','Le champ n\est pas sup&eacute; ou &eacute;gal &agrave; '.$valeurB);
    		$oPluginValid->isLowerThan('champ','valeurB','Le champ n\est pas inf&eacute;rieur &agrave; '.$valeurB);
    		$oPluginValid->isLowerOrEqualThan('champ','valeurB','Le champ n\est pas inf&eacute;rieur ou &eacute;gal &agrave; '.$valeurB);
    		$oPluginValid->isEmpty('champ','Le champ n\'est pas vide');
    		$oPluginValid->isNotEmpty('champ','Le champ ne doit pas &ecirc;tre vide');
    		$oPluginValid->isEmailValid('champ','L\email est invalide');
    		$oPluginValid->matchExpression('champ','/[0-9]/','Le champ n\'est pas au bon format');
    		$oPluginValid->notMatchExpression('champ','/[a-zA-Z]/','Le champ ne doit pas &ecirc;tre a ce format');
    		*/
     
    		return $oPluginValid;
    	}
     
    	public function isValid(){
    		return $this->getCheck()->isValid();
    	}
    	public function getListError(){
    		return $this->getCheck()->getListError();
    	}
    	public function save(){
    		if(!$this->isValid()){
    			return false;
    		}
    		parent::save();
    		return true;
    	}
     
    }
    La classe module Authentification :
    Code : 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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
     
    <?php
    class module_auth extends abstract_module{
     
    	//longueur maximum du mot de passe
    	private $maxPasswordLength=100;
     
    	public function before(){
    		//on active l'authentification
    		_root::getAuth()->enable();
     
    		$this->oLayout=new _layout('template1');
    	}
     
    	public function _login(){
     
    		$sMessage=$this->checkLoginPass();
     
    		$oView=new _view('auth::login');
    		$oView->sError=$sMessage;
     
    		$this->oLayout->add('main',$oView);
     
    	}
    	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();
     
    		//on va verifier que l'on trouve dans le tableau retourne par notre model
    		//l'entree $tAccount[ login ][ mot de passe hashe ]
    		if(!_root::getAuth()->checkLoginPass($tAccount,$sLogin,$sHashPassword)){
    			return 'Mauvais login/mot de passe';
    		}
    		//demande d'explication sur ce code
    		$oUser=_root::getAuth()->getAccount();
            model_rightsManager::getInstance()->loadForUser($oUser);
     
     
    		_root::redirect('default::index');
    	}
    	public function _inscription(){
    		$message=$this->processInscription();
     
    		$oView=new _view('auth::inscription');
    		$oView->message=$message;
     
    		$this->oLayout->add('main',$oView);
    	}
    	private function processInscription(){
    		if(!_root::getRequest()->isPost()){
    			return null;
    		}
     
    		$tAccount=model_UTILISATEURS::getInstance()->getListAccount();
     
    		$sLogin=_root::getParam('login');
    		$sPassword=_root::getParam('password');
     
    		if($sPassword!=_root::getParam('password2')){
    			return 'Les deux mots de passe doivent etre identiques';
    		}elseif(_root::getParam('login')==''){
    			return 'Vous devez remplir le nom d utilisateur';
    		}elseif($sPassword==''){
    			return 'Vous devez remplir le mot de passe';
    		}elseif(strlen($sPassword) > $this->maxPasswordLength){
    			return 'Mot de passe trop long';
    		}elseif(isset($tAccount[$sLogin]) ){
    			return 'Utilisateur d&eacute;j&agrave; existant';
    		}
     
    		$oExample=new row_UTILISATEURS;
    		$oExample->UTI_LOGIN=$sLogin;
    		$oExample->UTI_PASSWORD=model_UTILISATEURS::getInstance()->hashPassword($sPassword);
    		$oExample->save();
     
    		return 'Votre compte a bien &eacute;t&eacute; cr&eacute;&eacute;';
     
    	}
     
    	public function _logout(){
    		_root::getAuth()->logout();
    	}
     
    	public function after(){
    		$this->oLayout->show();
    	}
    }
    Merci

  20. #20
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    On va commencer par regarder ce qui est récupéré, dans la classe model:
    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
     
    public function loadForUser($oUser){
    		//on purge
    		_root::getACL()->purge();
     
    		$tPermission=$this->findListByGroup($oUser->FKGROUPES);
     
    		//debug
    		plugin_debug::addSpy('tPermission',$tPermission);
     
    		if($tPermission){
    			foreach($tPermission as $oPermission){
    				_root::getACL()->allow($oPermission->ACTIONNAME,$oPermission->ITEMNAME);
    				//_root::getACL()->allow($oPermission->actionName,$oPermission->itemName);
    			}
    		}
    	}
    On va ajouter une ligne addSpy pour verifier le retour (a checker dans la barre de debug)
    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.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Problème avec gotoAndPlay, gestion des animations
    Par Pimprenelle dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 01/06/2008, 21h24
  2. Problème avec la dégradation des droits
    Par Bqrt37 dans le forum Sécurité
    Réponses: 2
    Dernier message: 16/07/2007, 10h53
  3. Problème avec la gestion des événements
    Par Franck.H dans le forum SDL
    Réponses: 32
    Dernier message: 26/02/2007, 16h01
  4. Problème avec la "Gestion des bibliothèques dynamiques"
    Par GoustiFruit dans le forum Delphi
    Réponses: 15
    Dernier message: 31/05/2006, 09h54
  5. Problème avec la gestion des événements
    Par CynO dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/10/2005, 10h07

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