Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
FORUM OFFICE FAQs OFFICE TUTORIELS OFFICE LIVRES OFFICE SOURCES VBA ACCESS

Sécuriser les composants d'un Webpart

Par Ludovic Lefort (Site web) (Blog)
 

Comment afficher/cacher des contrôles dans un webpart suivant les permissions de l'utilisateur connecté.

1. Introduction
2. Développement d'un webpart de base
3. Premier déploiement
4. Ajout de la sécurité
5. Liste des permissions
6. Référence
7. Liens
8. Sources du projet


1. Introduction

Il est parfois nécessaire de pouvoir afficher les contrôles contenus dans un webpart suivant les droits que posséde l'utilisateur connecté.
L'object SPSecurityTrimmedControl est justement là pour ça. Dans ce document, je vais par un exemple simple, vous expliquer comment l'utiliser.


2. Développement d'un webpart de base

Pour notre exemple il nous faut un webpart de base qui contiendra deux lignes de textes : la première devra être visible par tout le monde et la deuxième uniquement réservée aux administrateurs du site.
Première étape : Créons le webpart et laissons les deux textes être vus par tout le monde.
Dans Visual Studio nous allons créer un projet de type Class Library et l'appeler WebpartSecurity.
Renommez le fichier class1.cs en DemoSecurity.cs et ajoutez les références suivantes à votre projet:

  • System.web
  • Microsoft.Sharepoint (C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\ISAPI\Microsoft.Sharepoint.dll)
Nous devons maintenant signer notre assembly afin de pouvoir la copier dans la GAC lors du déploiement.

  • Clic droit sur le projet
  • properties
  • Signing
  • Choisir new dans la liste déroulante
  • Entrez le nom webpartsecurity.snk
  • décochez Protect my key with a password et cliquez sur OK
Après compilation vous devez obtenir ceci :

Pour être utilisé dans Sharepoint un Webpart doit hériter de la classe System.Web.UI.WebControls.WebParts.WebPart
Ajoutons donc un using de l'assembly System.Web.UI.WebControls.WebParts et définissons l'héritage au niveau de l'entête de classe:

using System.Web.UI.WebControls.WebParts;
public class DemoSecurity : WebPart
{
}
Prochaine étape surcharger la méthode CreateChildControls pour créer nos deux lignes de textes sur le webPart:

public class DemoSecurity : WebPart
{
    protected override void CreateChildControls()
    {
        base.CreateChildControls();
        Controls.Add(new LiteralControl("Public Text"));
        Controls.Add(new LiteralControl("Administrator Text"));
    }
}

3. Premier déploiement

Déployons et testons maintenant notre webpart dans Sharepoint.
Nous allons commencer par déployer notre assembly dans la GAC pour cela "drag and dropppez" le fichier WebpartSecurity.dll dans le répertoire c:\windows\assembly
Une fois que cela est fait nous allons récupérer le strong name de notre assembly à l'aide du très pratique .net reflector

Modifions le fichier web.config de notre application Sharepoint (par défaut : C:\Inetpub\wwwroot\wss\VirtualDirectories\...) afin de truster notre assembly.
Il faut ajouter une ligne dans la section <Safecontrols> :


Le webpart est maintenant connu par Sharepoint et prêt à être ajouté dans la Webpart gallery
Pour cela connectez vous en tant qu' administrateur sur votre site Sharepoint et faites :

  • Site Actions
  • Site Settings
  • Galleries > Webparts
  • New
  • Cochez la ligne concernant notre WebPart
  • Cliquez sur le bouton Populate Gallery en haut de la page
Nous pourrons alors ajouter notre Webpart sur une WebpartPage:


4. Ajout de la sécurité

Nous voulons que la deuxième ligne de texte ne soit visible que par les administrateurs du site, pour cela nous allons utiliser un objet de type SPSecurityTrimmedControl
. Voici le nouveau code :

using System.Web.UI.WebControls.WebParts;
using System.Web.UI;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
namespace WebpartSecurity
{
    public class DemoSecurity : WebPart
    {
        protected override void CreateChildControls()
        {
            base.CreateChildControls();
            SPSecurityTrimmedControl sptrim = new SPSecurityTrimmedControl();
            sptrim.PermissionsString = "ManageWeb";
            Controls.Add(new LiteralControl("Public Text"));
            sptrim.Controls.Add(new LiteralControl("Administrator Text"));
            Controls.Add(sptrim);
        }
    }
}
Quels sont les changements ?

  • Ajout d'un using pour Microsoft.SharePoint.WebControls
  • Création d'un objet SPSecurityTrimmedControl avec la proprieté PermissionString à "ManageWeb"

SPSecurityTrimmedControl sptrim = new SPSecurityTrimmedControl();
sptrim.PermissionsString = "ManageWeb";
  • Nous n'ajoutons plus la deuxième ligne de texte directement sur le webpart mais dans l'objet sptrim que nous ajoutons sur le webpart

sptrim.Controls.Add(new LiteralControl("Administrator Text"));
Controls.Add(sptrim);
Recompilez votre projet, re-déployez la dll dans la GAC et faites un IISreset
Si vous testez maintenant votre webpart en tant qu'administrateur vous obtenez :

alors que en tant que non-administrateur :


Remarque : Pour cumuler plusieurs permissions (ET logique) il faut les séparer par une virgule:

sptrim.PermissionsString = "ManageWeb, AddAndCustomizePages";

5. Liste des permissions

Permissions sur les listes :
  • ManageLists
  • CancelCheckout
  • AddListItems
  • EditListItems
  • DeleteListItems
  • ViewListItems
  • ApproveItems
  • OpenItems
  • ViewVersions
  • DeleteVersions
  • CreateAlerts
  • ViewFormPages
Permissions sur les sites
  • ManagePermissions
  • ViewUsageData
  • ManageSubwebs
  • ManageWeb
  • AddAndCustomizePages
  • ApplyThemeAndBorder
  • ApplyStyleSheets
  • CreateGroups
  • BrowseDirectories
  • CreateSSCSite
  • ViewPages
  • EnumeratePermissions
  • BrowseUserInfo
  • ManageAlerts
  • UseRemoteAPIs
  • UseClientIntegration
  • Open
  • EditMyUserInfo
Permissions personnelles
  • ManagePersonalViews
  • AddDelPrivateWebParts
  • UpdatePersonalWebParts

6. Référence



7. Liens



8. Sources du projet

Cliquez ici pour télécharger les sources de ce projet.






Je tiens à remercier stephane eyskens pour la correction orthographique de cet article.



Valid XHTML 1.1!Valid CSS!

Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.
Responsables bénévoles de la rubrique MS-Office : Christophe Warin (MVP) et Maxence HUBICHE (MVP) - Contacter par EMail :
Vos questions techniques : forum d'entraide MS-Office - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.