Si je déploie une solution au niveau de la batterie de serveurs, existe-t-il un moyen d'empêcher les propriétaires des différentes collections de sites d'activer les fonctionnalités présentes dans cette solution?Empêcher les utilisateurs d'activer des fonctionnalités dans Sharepoint
Répondre
Si une erreur se produit lors de l'activation d'une fonction, elle n'activera pas la fonction et retirera tous les effets susceptibles d'avoir été déployés dans le cadre du manifeste d'éléments. Ainsi, grâce à l'utilisation astucieuse de cela, vous pouvez utiliser la partie FeatureActivated d'un récepteur de fonctionnalités pour vérifier qui l'active, et lancer une exception UnauthorizedAccessException avec un message d'erreur approprié détaillant pourquoi la fonctionnalité ne peut pas être activée. Cela apparaîtra comme la page d'erreur standard de SharePoint avec le message que vous spécifiez. Si vous disposez déjà d'un récepteur de fonctions sur la fonction, vous devez l'ajouter au début de la partie FeatureActivated, afin qu'aucune action programmatique ne se produise (contrairement aux manifestes d'éléments, ceux-ci ne sont pas annulés en cas d'activation infructueuse).
Si vous n'avez jamais utilisé de récepteur de fonctions auparavant, vous n'avez besoin que de deux parties pour l'établir.
Dans la fonctionnalité XML de votre fonctionnalité, ajoutez les deux attributs suivants au nœud Feature.
ReceiverAssembly=(four-part-assembly-string) ReceiverClass=(full namespace.class name of receiver class)
Écrivez une classe de récepteur. Il hérite de
SPFeatureReceiver
et possède 4 remplacements obligatoires dansFeatureActivated
,FeatureDeactivating
,FeatureInstalled
etFeatureUninstalling
. Vous n'avez rien à faire pendant les trois dernières minutes. Vous allez écrire votre contrôle de sécurité dans la méthodeFeatureActivated
.
Une manière simple d'empêcher les utilisateurs de la collection de sites d'activer une certaine fonctionnalité est de la marquer comme étant masquée. Ces fonctionnalités ne peuvent ensuite être activées que par les administrateurs de batterie via les commandes STSADM.
Pour masquer une fonctionnalité mise à jour l'attribut caché de l'élément de fonction pour « TRUE » comme indiqué ci-dessous:
<Feature
Id="AD2146D-62DA-4911-DBC1-AE177DE40084"
Title="Restricted Web Parts"
Hidden="TRUE"
.../>
Alternativement, si vous utilisez SharePoint 2010, vous pouvez utiliser Feature Packs pour résoudre ce problème en ciblant une ensemble de fonctionnalités à un ensemble particulier d'utilisateurs.
Regardez le Zevenseas feature blocker.