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

Développement Sharepoint .NET Discussion :

[SP-2010] Règles de sécurité sur les éléments issus du BCS


Sujet :

Développement Sharepoint .NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 121
    Points : 124
    Points
    124
    Par défaut [SP-2010] Règles de sécurité sur les éléments issus du BCS
    Bonjour,

    Dans un projet SP2010 Server, j'ai mis en place la récupéartion de données via le BCS.
    Ce contenu est indexé par le moteur de recherche et les éléments sont bien retournés dans les pages résultat de la recherche.

    Dans ces données, j'ai une table Voiture (c'est pour l'exemple) qui contient les données suivantes Marque, Modèle et Description
    Marque---Modèle----Description
    Jaguar----XType----Voiture allemande...
    Renault---Clio-------Voiture française...
    Peugeot--306-------Voiture française...
    Citroen---C2--------Voiture française...
    Citroen---C3--------Voiture française...
    Ferrari----F40-------Voiture italienne...

    Tous les utilisateurs n'ont pas le droit de voir toutes les marques.

    L'utilisateur A à le droit de voir Jaguar mais pas les autres marques
    L'utilisateur B à le droit de voir Citroen mais pas les autres marques
    etc....

    Pour continuer de faire simple, on va considérer que c'est l'AD qui me renvoi la marque de voiture qu'un utilisateur à le droit de voir.

    J'aimerais donc trouver une solution pour que l'utilisateur A ne voit que les résultats de recherche qui lui sont destinés (Jaguar) et pareil pour les autres utilisateurs.

    Quelle est l'approche à adopter pour traiter ce problème ? Y'a t'il un event receiver sur le lancement de la recherche qui me permettrait de repréciser la requete de recherche. Pour info, Marque, Modèle et Description sont des metadata property qui sont donc retourné dans le flux XML des résultats de recherche. Je peux donc faire un filtre dessus a priori dans la requete de recherche, du style "voiture Marque:Jaguar".

    Nota : Le filtre a posteriori des résultats de recherche n'est pas la bonne solution

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 121
    Points : 124
    Points
    124
    Par défaut
    Je viens de trouver !

    Il suffit betement de surcharger le CoreResultsWebPart de SharePoint qui est en fait le WebPart qui affiche les résultats de la recherche et de surcharger la méthode CreateDataSource en ajoutant le morceau de requete à la propriété AppendedQuery.

    Du code valant mieux qu'un long discours :

    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
     
    namespace CustomWebParts.CustomCoreResultsWebPart {
      [ToolboxItemAttribute(false)]
      public class CustomCoreResultsWebPart : CoreResultsWebPart {
        protected override void CreateChildControls() {
          base.CreateChildControls();
        }
     
        protected override void CreateDataSource() {
          //Récupération du code voiture de l'utilisateur courant
          string codeVoiture = GetCodeVoitureForCurrentUser();
          string req = " AND Marque:" + codeVoiture;
          base.AppendedQuery = req;
     
          base.CreateDataSource();
        }
      }
    }
    Et voilou, l'affaire est dans le sac !
    Y'a plus qu'a remplacer le CoreResultsWebPart par défaut par le custom et tout fonctionne à l'identique.

    En travaillant un peu plus sur le sujet, on s'apercoit même qu'on peut filtrer les données voire même les trier. (Cf. ici)

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

Discussions similaires

  1. [Sharepoint 2010] Compteur de clicks sur les éléments d'une liste
    Par rohstev dans le forum Développement Sharepoint
    Réponses: 5
    Dernier message: 31/07/2015, 16h48
  2. Réponses: 2
    Dernier message: 12/02/2008, 10h51
  3. Travail sur les éléments d'une matrice.
    Par Jefeh dans le forum MATLAB
    Réponses: 6
    Dernier message: 12/11/2007, 15h10
  4. Réponses: 1
    Dernier message: 09/05/2007, 15h58
  5. [XSLT] somme sur les éléments d'un sous arbre
    Par Raumfahrerralf dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 17/03/2007, 16h23

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