Auteur de questions
Sécurisez vos colonnes sans code

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…
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 »
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.
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 :
Si je sélectionne un contact j’obtiens la vue suivante :
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.
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 ».
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 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
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 »
Cliquez sur le bouton « Advanced »
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 »
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 :
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 »
Vous obtenez ceci :
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 » :
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
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 me connecte en tant que Franck Silvestre et je clique sur notre ami Georges Clooney :
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é…
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
Toutes les réponses
-
-
Pas de quoi Nico ;)
Ça fait des mois que je dis que je vais l'écrire, cette fois-ci j'ai pris le temps... Pas assez que pour écrire sans faute mais la version corrigée sera publiée sur mon blog dans quelques minutes. Sinon, désolé pour les puristes :D
Pascal P
http://sharepoint-afterwork.fr
Twitter: @PascalPoeck
Facebook : https://www.facebook.com/SharePointAfterWork -
Merci Pascal
J'ai fait ce thread permanent.
Cordialement,
Aurel
-
Bonjour,
Merci pour cet article, je le trouve très intéressant.
- Modifié Arafetovich lundi 5 novembre 2012 10:30
-
Pas de quoi, à votre service ;)
Pascal P
http://sharepoint-afterwork.fr
Twitter: @PascalPoeck
Facebook : https://www.facebook.com/SharePointAfterWork -
Bonjour,
Pour info, je suis tombé sur une solutuin disponible sous CodePlex :
http://spcolumnpermission.codeplex.com/
Elle permet d'attribuer (ou non) des droits sur les colonnes et les vues. J'ai testé rapidement et semble répondre à ce besoin récurent (à l'occasion je testerai plus en profondeur)
NicoBzh