Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
requetes [2013/02/14 10:51] 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 : | + | |
- | ^ 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$). | + | |
+ | [[requetes:tutoriaux:droitsarbo | Arborescence et gestion des droits ]] |