Outils pour utilisateurs

Outils du site


requetes

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
requetes [2013/02/14 11:03]
florian
requetes [2023/03/17 09:56] (Version actuelle)
Ligne 1: Ligne 1:
-====== ​Dossiers ​======+====== ​DOCUMENTATION ​======
  
 **Attention :** il est impératif que chaque élément du dossier ait une correspondance dans chacune des requêtes ! **Attention :** il est impératif que chaque élément du dossier ait une correspondance dans chacune des requêtes !
  
-====== Tutoriaux ​=====+===== Recherche Globale ​=====
  
-===== Arborescence et droits =====+Comment sont sélectionnés les champs retournés dans le résultat de la recherche globale :
  
-Objectif : Mettre en place une requête ​avec arborescence ​et permettant une gestion ​des droits d'accès.+  * L'​affichage (et le parcours des champs) est déterminé par le rang (Revision >= XXXX ) 
 +  * Tout champ de la requête ​dont la valeur contient le(s) mot(s) recherché(s). 
 +  * Un champ dont le rang est compris entre le rang 1 et 3 peut être présenté (exception faite des champs de type "​fulltext"​ ou ne contenant aucune valeur) même s'il ne contient pas le mot recherché. Au-delà du rang 3 seul un champ contenant la valeur recherchée sera retourné.
  
-Avant-propos : La gestion des droits sur les requêtes s'​effectue par la mise en place de [[roles|rôles]],​ mais ici nous n'​avons qu'une seule requête 
-et nous voulons restreindre l'​accès à certains résultats pour des utilisateurs donnés. 
  
-Solution : Nous allons créer une table de droits qui fera le lien entre un champ de notre table //métier// et le champ **SECUSR_SECGRPID** de la table **_secusr 
-** 
  
-Exemple : Nous avons une table nommée **dossiers**,​ qui est notre table principale, et une table **listtypdossiers**,​ référençant les différents types de dossiers. ​+====== TUTORIAUX =====
  
-Table dossiers ​: +[[requetes:tutoriaux:droitsarbo ​Arborescence ​et gestion des droits ​]]
-^ DOSSIERS_ID ​     ^ DOSSIERS_TYPID ​      ^ DOSSIERS_DESC ​         ^ +
-| 1                | 1                    | Dossier Sanzot ​        | +
-| 2                | 2                    | Dossier top secret ​    | +
-| 3                | 1                    | Dossier COGIP          | +
- +
-Le champ **DOSSIERS_TYPID** fait le lien avec la table listtypdossiers (il référence la clé primaire de cette table) et nous permettra via une jointure d'​afficher le type de dossier plutôt que son identifiant. +
- +
-Table listtypdossiers ​: +
-^ LISTTYPDOSSIERS_ID ^ LISTTYPDOSSIERS_DESC ^ +
-1                  | DOSSIER TECHNIQUE ​   | +
-| 2                  | DOSSIER DIRECTION ​      | +
- +
-Dans notre système nous avons deux groupes d'​utilisateurs : **Technicien** ​et **Direction**. +
-Nous voulons que les utilisateurs de ces deux groupes aient accès à la requête **dossiers**. Mais nous ne voulons pas que les utilisateurs du groupe Technicien voient les dossiers du type //"​DOSSIER SECRET"//​. +
-On ne peut pas faire cela avec les rôles. Les rôles ne permettent pas de restreindre les accès à des résultats précis. +
- +
-Ce que nous pouvons faire c'est de déterminer quel groupe a accès à quel(s) type(s) de dossiers. +
-Il nous faut une table supplémentaire : +
- +
-Table droitsdossiers : +
-^ DROITSDOSSIERS_ID ^ DROITSDOSSIERS_TYPID ^ DROITSDOSSIERS_SECGRPID ^ +
-| 1                 | 1                    |  1                     | +
-| 2                 | 2                    |  1                     | +
-| 3                 | 1                    |  2                     | +
- +
-Pour information voici ce que serait la table _secgrp : +
-^ SECGRP_ID ^ SECGRP_DESC ^ +
-| 1         | Direction ​   | +
-| 2         | Technicien ​  | +
- +
- +
-A présent nous avons toutes les informations nécessaires dans la base de données pour simuler une gestion des droits ​dans notre requête. +
-Pour cela nous allons : +
- +
-  - Jointer la table dossiers et listtypdossiers sur les champs DOSSIERS_TYPID et LISTTYPDOSSIERS_ID +
-  - Jointer la table dossiers et droitsdossiers sur les champs DOSSIERS_TYPID et DROITSDOSSIERS_TYPID +
-  - Jointer la table droitsdossiers et _secusr sur les champs DROITSDOSSIERS_SECGRPID et SECUSR_SECGRPID +
-  - Créer une condition portant sur le champ SECUSR_ID pour que sa valeur soit égale à l'id de l'​utilisateur connecté (via $secusrid$). +
- +
-La requête ressemblera à ceci : +
-<​code>​SELECT * +
-FROM dossiers +
-LEFT JOIN listtypdossiers ON ( dossiers.TYPID = listtypdossiers.ID ) +
-LEFT JOIN droitsdossiers ON ( dossiers.TYPID = droitsdossiers.TYPID ) +
-LEFT JOIN _secusr ON ( droitsdossiers.SECGRPID = _secusr.SECUSR_SECGRPID ) +
-WHERE _secusr.SECUSR_ID = **$secusrid$** +
-</​code>​ +
- +
-Où $secusrid$ dépendra de l'​utilisateur connecté.+
requetes.1360839806.txt.gz · Dernière modification: 2023/03/17 09:56 (modification externe)