mercredi 5 août 2009

SPSecurityTrimmedControl

Le contrôle spsecuritytrimmedcontrol permet d'effectuer un affichage conditionnel d'une partie du contenu d'une page Web. Nous allons illustrer cela par un exemple pratique qui va vous permettre de cacher le bouton Site Actions (Actions du site) pour tous les membres n'étant pas administrateur.

Ce contrôle fonctionne d'une manière assez particulière. Nous ne pouvons pas cacher un contenu à un certain visiteur ou bien à un certain groupe. En effet, cela fonctionne avec des niveaux de permissions. Nous allons voir cela tout de suite. Nous allons commencer par modifier la master page de notre site où se trouve le contrôle affichant les actions du site. Ouvrez donc votre site et allez dans Site action > Site settings et en dessous de la partie Galleries, sélectionnez Master pages. La page qui apparait alors vous affiche la liste des pages maitres de votre site. Voici à quoi cela ressemble pour un site avec une page maitre par défaut :

Nous allons maintenant modifier cette page maitre. Positionnez votre curseur dessus pour faire apparaitre une liste déroulante et choisissez Send To > Download a copy :

Et enregistrez la page sur votre bureau. Le mieux serait d'ouvrir cette page dans SharePoint Designer, mais pour ceux qui ne le possède pas, nous allons l'ouvrir dans le bloc note de Windows. Ouvrez donc ce dernier et ouvrez votre page maitre dedans. Nous allons maintenant repérer l'élément permettant d'afficher le menu Site Actions. Allez donc dans Edition > Rechercher et tapez Actions. Normalement, le bloc note devrait se positionner dans votre document à hauteur de ces éléments :

<SharePoint:SiteActions runat="server"
AccessKey="<%$Resources:wss,tb_SiteActions_AK%>"
id="SiteActionsMenuMain"
PrefixHtml="&lt;div&gt;&lt;div&gt;"
SuffixHtml="&lt;/div&gt;&lt;/div&gt;"
MenuNotVisibleHtml=" ">

...
</SharePoint:SiteActions>


C'est donc cette partie de code qui permet d'afficher le bouton Site Actions. Nous allons maintenant utiliser le contrôle SPSecurityTrimmedControl pour ne l'afficher que si l'utilisateur courant est un administrateur. Comme nous avons vu précédemment, il n'est pas possible de définir tel quel que le bouton ne s'affichera pas si l'utilisateur n'est pas un administrateur. Effectivement, la condition ne s'applique pas au groupe ni à l'utilisateur mais aux permissions de l'utilisateur. Effectivement, le contrôle SPSecurityTrimmedControl contient un attribut nommé PermissionString qui contiendra une ou plusieurs permission. Si les permissions liées à l'utilisateur se retrouvent dans cette liste, le contenu du contrôle sera affiché.

Ce contrôle contient 3 attributs importants. Le premier est PermissionString qui va contenir une liste de permissions séparées par des virgules. Ces permissions sont parmi les suivantes :

AddAndCustomizePages Peut ajouter, modifier ou supprimer des pages HTML ou des "WebPart Pages". Peut également éditer le site en utilisant un éditeur compatible SharePoint.
AddDelPrivateWebParts Peut ajouter ou supprimer des WebPart personnelles sur une WebPart Page.
AddListItems Peut ajouter des éléments à une liste et des documents à une librairie de document.
ApplyStyleSheets Peut appliquer des feuilles de styles au site.
ApplyThemeAndBorder Peut appliquer un theme au site.
ApproveItems Peut approuver une version mineure d'un élément d'une liste.
BrowseDirectories Peut énumérer les fichiers et dossiers d'un site en utilisant Microsoft Office SharePoint Designer 2007.
BrowseUserInfo Peut visualiser les informations sur les utilisateurs du site.
CancelCheckout Peut annuler ou faire un "check-in" sur un document qui est en "check out" par un utilisateur.
CreateAlerts Peut créeer des alertes.
CreateGroups Peut créer un groupe d'utilisateur.
CreateSSCSite Peut créer un site utilisant le "Self-Service Site Creation".
DeleteListItems Peut supprimer des éléments dans une liste et des documents dans une librairies de documents.
DeleteVersions Peut supprimer des versions d'un élément dans une liste.
EditListItems Peut éditer des éléments d'une liste, un document dans une librairie de document et personnaliser des WebPart Page dans une librairie de documents.
EditMyUserInfo Permet à l'utilisateur de changer ses informations personnelles.
EmptyMask Aucune permission accordée. (Non accessible depuis l'interface utilisateur)
EnumeratePermissions Permet d'énumérer les permissions d'un site, d'une liste, d'un dossier, d'un document ou d'un élément de liste.
FullMask Possède toute les permissions. (Non accessible depuis l'interface utilisateur)
ManageAlerts Peut gérer les alertes des utilisateurs du site.
ManageLists Peut créer et supprimer des listes, ajouter ou supprimer des colonnes ou des vues dans une liste.
ManagePermissions Permet de créer et de changer les niveaux de permissions du site et de les assigner à un utilisateur/groupe.
ManagePersonalViews Peut créer, modifier et supprimer des vue personnelles dans une liste.
ManageSubwebs Peut créer des sous sites.
ManageWeb Permission accordée pour toutes les tâches d'administration du site.
Open Peut ouvrir un site, une liste ou un dossier pour accéder aux éléments de ce dernier.
OpenItems View the source of documents with server-side file handlers.
UpdatePersonalWebParts Peut mettre à jouer les Webparts affichant des informations personnalisées.
UseClientIntegration Peut utiliser des fonctionnalités qui lancent des application cliente.
UseRemoteAPIs Peut utiliser SOAP, WebDAV, ou Microsoft Office SharePoint Designer 2007 pour accéder au site.
ViewFormPages Peut voir les formulaires, les vues et les pages applicatives. Peut également énumérer les listes.
ViewListItems Peut voir les éléments dans une liste et les documents dans une librairie de documents.
ViewPages Peut voir les pages d'un site.
ViewUsageData Peut visualiser les rapports sur l'utilisation du site.
ViewVersions Peut voir les anciennes versions des éléments d'une liste.

L'attribut PermissionString doit donc contenir une combinaison de ces valeurs. Si vous voulez en mettre plusieurs, il faut les séparer par une virgule. Le deuxième attribut important de ce contrôle est PermissionContext qui permet de définir l'objet duquel les permissions seront récupérées pour la comparaison. Cet attribut doit contenir une des valeurs suivantes :

CurrentFolder : Permission du dossier courant.
CurrentItem : Permission de l'élément courant.
CurrentList : Permission de la liste courante.
CurrentSite : Permission du site courant.
RootSite : Permission du site racine de la collection de site.

Enfin, nous avons l'attribut PermissionMode. Si la valeur de cet élément est All, l'utilisateur devra posséder toutes les permissions contenues dans PermissionString pour voir l'élément contenu dans le SPSecurityTrimmedControl. Par contre, si la valeur de cet attribut est Any, l'utilisateur aura accès à l'élément sécurisé s'il possède au moins une des permissions de l'attribut PermissionString.

Ici, nous allons encadrer le morceau de code précédent d'un SPSecurityTrimmedControl pour n'afficher le bouton Site Actions que si l'utilisateur est un administrateur. Tapez donc ceci au dessus de l'élément SharePoint:SiteActions :

<SharePoint:SPSecurityTrimmedControl PermissionString="ManageWeb" PermissionMode="All" PermissionContext="CurrentSite" runat="server">


Et ceci en dessous de l'élément de fermeture de SharePoint:SiteActions :

</SharePoint:SPSecurityTrimmedControl>


Ici, nous avons choisis ManageWeb comme permission car seuls les administrateurs du site possèdent cette permission. Sauvez et fermez maintenant votre page. Retournez dans la liste SharePoint contenant les pages maitres (même pages que précédemment) et uploadez votre nouvelle version de votre Master Page. Vous pouvez maintenant voir qu'en tant qu'administrateur, vous pourrez accéder au Site Actions, par contre, lorsque vous vous connectez en tant que simple membre, ce bouton ne sera plus accessible.

Plus de tutoriel sur AreaProg et Développez

Aucun commentaire:

Enregistrer un commentaire