none
Sécurisez vos colonnes sans code RRS feed

  • Discussion générale

  • Si on devais me demander quelle question reviens le plus souvent dans les discussions je répondrais probablement que c’est la question où on se demande comment sécuriser une colonne dans SharePoint. J’avais déjà réalisé une petite vidéo sur le sujet mais j’étais parti sur l’utilisation des audiences et force est de constater que l’exemple n’était pas le bon. En effet, les audiences ne sont disponible que pour les versions « Serveur » de SharePoint avec les licences « Entreprise »… Quelle nouille je fais parfois, vraiment… :D

    La vidéo en question est disponible à cette adresse : http://sharepoint-afterwork.fr/pfolio/masquer-une-colonne-en-fonction-de-laudience/

    Pour ce billet nous allons partir sur l’utilisation d’une simple liste contenant plusieurs personnes, ce qui rend cette solution compatible à partir de WSS 3.0 jusqu’à SharePoint 2010, en passant par SharePoint Foundation bien entendu. Pour les curieux, sachez que cela ne fonctionnera plus avec SharePoint 2013 car nous avons besoin de SharePoint Designer et de sa vue en mode « Designer », vue qui a disparu avec SharePoint Designer 2013 (si vous voulez suivre le fil de discussion à ce sujet c’est par là : http://social.technet.microsoft.com/Forums/en-US/sharepointitpropreview/thread/8f8e2cb3-a90f-4653-9d22-050f9f0d8612)

    Première étape : création d’un type de contenu pour stocker une série d’utilisateurs ayant des droits particuliers…

    Rien de bien compliqué ici. Je pourrais partir sur une simple liste custom et utilisé la colonne « Titre » fournie en standard mais bon, je suis pointilleux et ça m’ennuie fortement quand il faut encoder des noms à la main alors qu’on a un beau contrôle de type « People Picker » ;-)

    Le type de contenu « Managers »

    Définition du type de contenu

    Noter bien que j’ai modifié la colonne « Title » pour la masquer dans mon formulaire de saisie et que j’ai ajouter une colonne « Manager » de type « Person or Group ».

    Une fois mon type de contenu créer, il me reste à créer une liste custom à laquelle je vais rattacher ce type de contenu et y insérer ensuite quelques noms.

    Ma liste de Manager

    Jusque là, rien de bien particulier donc ;-)

    Exemple 1 : cacher la colonne « Téléphone Privé » si on ne fait pas partie du groupe des Manager

    Pour ce premier exemple nous allons partir d’une liste standard qui est la liste « Contact ». L’idée est donc d’afficher les coordonnées d’une personne et de n’afficher le numéro de téléphone privé que si on fait partie de la liste des Manager. Voici ma liste « Contact » avec quelques infos dedans  :

    Georges Clooney c’est pour l’exemple hein :p

    Si je sélectionne un contact j’obtiens la vue suivante :

    Le formulaire « Display Form » d’origine

    On vois bien ici que les informations concernant le numéro de téléphone sont visible par tout le monde. Pour modifier cela il va falloir passer par SharePoint Designer. Une fois SharePoint Designer ouvert et connecté a votre site, cliquez dans le menu de gauche sur « List and Librairies » et cliquez sur votre liste « Contacts » pour afficher sa page de paramètre.

    La page de paramètre de notre liste « Contacts »

    A présent il faut créer un nouveau formulaire de type « Display Form » qui servira de formulaire par défaut lorsqu’un utilisateur cliquera sur un élément de notre liste de contact. Dans mon exemple j’ai créer un formulaire SPAWDispForm et j’ai cocher la case « Par défaut ».

    Création d’un nouveau formulaire « Display Form »

    Cliquez ensuite sur votre nouveau formulaire pour l’ouvrir en mode d’édition.

    Positionner votre curseur n’importe où dans le formulaire pour que le ruban affiche les bon outils.

    Cliquez dans le formulaire pour faire apparaître le bouton « Parameters » dans le ruban

    Cliquez sur le bouton « Parameters » dans le ruban et ajouter un nouveau paramètre avec pour nom : ContactAdminParam, pour Source : Query String et comme variable ContactAdmin

    Ajout d’un paramètre

    Sélectionnez votre ligne qui contient les informations concernant le numéro de téléphone privé, ensuite cliquez sur « Conditional Formatting » dans le ruban et finalement sur « Show Content »

    Sélectionnez bien toute la ligne « Home Phone » afin de tout masquer…

    Cliquez sur le bouton « Advanced »

    Juste un click…

    Dans la case « Edit the XPath expression », tapez $ContactAdminParam!= » (ce qui reviens à dire en langage courant que j’affiche les données si le paramètre ContactAdminParam n’est pas vide) et cliquez ensuite deux fois sur le bouton « OK »

    Attention à la fin de votre expression. Il s’agit de 2 simples guillemets et non d’un double

    Il est à présent temps de sauvegardez vos modifications en cliquant sur le petit icône en forme de disquette en haut à gauche. Appuyez maintenant sur le la touche F12 de votre clavier pour ouvrir votre formulaire dans le navigateur. Veillez bien à fermer votre formulaire dans SharePoint Designer sinon vous allez finir par vous perdre :-)

    Vous obtenez la fenêtre suivante :

    Le formulaire en mode F12 :-)

    Cliquez sur l’onglet « Page » et éditez votre page. Ajoutez-y le webpart « Manager » qui comprend la liste des personnes qui ont le droits de voir la colonne « privée »

    Ajout du WebPart « Manager » sur la page

    Vous obtenez ceci :

    Le webpart « Manager » sur le formulaire

    Editez votre WebPart et cliquez sur « Edit the current view » pour modifier la vue. Dans la section « Filters », sélectionnez votre colonne « Manager » is equal to [me] comme ci-dessous et cliquez sur « OK » :

    Application du filtre

    Editez à nouveau votre page, cliquez sur la petite flèche du WebPart pour connecter celui-ci avec votre liste « Contacts ».

    Vous obtenez l’écran suivant :

    Dans « Connection Types » sélectionnez « Get Parameters From » et cliquez sur le bouton « Configure »

    Remplissez les cases comme ci-dessous et cliquez sur le bouton « Finish » :

    Pour finir et surtout pour que ce soit « propre » il vous reste à masquer le WebPart « Manager » en l’éditant et en cochant la case « Hidden » dans la section « Layout »

    Il ne vous reste plus qu’à cliquez sur le bouton « OK », arrêter l’édition de la page et …. tester :D

    LE TEST

    Je me connecte en tant que l’utilisateur  » Ludwig Zimer » et je clique sur notre ami Georges Clooney pour voir sa fiche :

    Je ne vois pas le téléphone privé de Georges…

    Je me connecte en tant que Franck Silvestre et je clique sur notre ami Georges Clooney :

    Je vois bien le numéro de téléphone privé de Georges :D

    Voilà donc comment « jouer » sur la sécurité des colonnes dans SharePoint. Je peux comprendre que ma technique vous déroute quelque peu mais elle est tellement flexible que vous ne saurez bientôt plus vous en passer. Rappelez-vous que j’ai utiliser une colonne « People and Group » dans mon type de contenu donc je peux aussi jouer avec les groupes SharePoint plutôt que de me baser sur un utilisateur en particulier. Autre avantage, avec cette technique vous pourrez aussi empêcher un propriétaire ou un administrateur de la collection de site de voir ou modifier certaines colonnes. Dans la copie d’écran ci-dessous, je suis connecter en tant que System Admin et je ne vois pourtant pas la colonne contenant le numéro de téléphone privé…

    Ca marche même pour les Administrateurs ;)

    Autre variante : avec cette technique vous pourrez également empêcher les personnes qui ne sont pas dans votre liste de Manager de modifier certaines colonnes (il pourront les voir mais pas les modifier). Exemple, j’ai une liste de tâche dans laquelle j’ai une date d’échéance et je veux qu’une fois que la date d’échéance est définie, plus personne ne puisse la modifier… La technique est la même, seule les variables change mais ça ce sera pour une prochaine fois ;-)


    Pascal P
    http://sharepoint-afterwork.fr
    Twitter: @PascalPoeck
    Facebook : https://www.facebook.com/SharePointAfterWork

    mardi 23 octobre 2012 16:33

Toutes les réponses