Procédure : ajouter une entrée de contrôle d'accès à un objet de métadonnées
Vous devez accorder des autorisations aux utilisateurs pour qu'ils puissent exécuter des méthodes, modifier des paramètres et définir des autorisations sur un objet de métadonnées. Cet exemple de code explique comment utiliser le modèle objet pour ajouter des entrées de contrôle d'accès aux objets de métadonnées. Le premier exemple ajoute une entrée de contrôle d'accès pour l'utilisateur actuel. Le deuxième exemple ajoute un utilisateur mentionné dans l'exemple. Notez que vous pouvez utiliser le caractère spécial | (barre verticale) pour octroyer une combinaison de droits aux utilisateurs.
Exemple
Cet exemple ajoute une entrée de contrôle d'accès pour l'utilisateur actuel et à un utilisateur spécifié.
Conditions préalables requises
Assurez-vous qu'un fournisseur de services partagés est déjà créé.
Créez une instance LobSystem et définissez les paramètres de connexion comme l'indique la rubrique Procédure : créer un objet LobSystem à l'aide du modèle objet Administration.
Créez l'entité ProductModel comme l'indique la rubrique Procédure : créer une entité à l'aide du modèle objet Administration.
Créez une méthode Finder comme l'indique la rubrique Procédure : créer une méthode et des filtres à l'aide du modèle d'objet d'administration.
Dans le code, remplacez la valeur constante EnterYourSSPNameHere par le nom de votre fournisseur de services partagés.
Remplacez la valeur constante userName selon le format domainname\\username.
Références de projet
Ajoutez les références de projet suivantes dans votre projet de code d'application de console avant d'exécuter cet exemple :
Microsoft.SharePoint
Microsoft.SharePoint.Portal
Microsoft.Office.Server
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Server.ApplicationRegistry.Administration;
using Microsoft.Office.Server.ApplicationRegistry.Infrastructure;
using WSSAdmin = Microsoft.SharePoint.Administration;
using OSSAdmin = Microsoft.Office.Server.Administration;
namespace Microsoft.SDK.SharePointServer.Samples
{
class GetStartedAndCreateSystem
{
const string yourSSPName ="EnterYourSSPNameHere";
const string userName ="domainname\\username";
static void Main(string[] args)
{
SetupBDC();
SetAccessControlListForCurrentUser();
SetAccessControlListForSpecifiedUser();
Console.WriteLine("Press any key to exit...");
Console.Read();
}
static void SetupBDC()
{
SqlSessionProvider.Instance().SetSharedResourceProviderToUse(yourSSPName);
}
public static void SetAccessControlListForCurrentUser()
{
LobSystemInstance mySysInstance = null;
LobSystemInstanceCollection sysInsCollection = ApplicationRegistry.Instance.GetLobSystemInstancesLikeName("AdventureWorksSampleFromCode");
foreach (LobSystemInstance sysInstance in sysInsCollection)
{
if (sysInstance.Name == "AdventureWorksSampleFromCode")
{
mySysInstance = sysInstance;
break;
}
}
LobSystem ls = mySysInstance.LobSystem;
IAccessControlList acl = ls.GetAccessControlList();
String currentIdentity = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
acl.Add(new IndividualAccessControlEntry(currentIdentity, BdcRights.SetPermissions | BdcRights.Execute));
try
{
ls.SetAccessControlList(acl);
}
catch (AccessDeniedException)
{
}
}
public static void SetAccessControlListForSpecifiedUser()
{
LobSystemInstance mySysInstance = null;
LobSystemInstanceCollection sysInsCollection = ApplicationRegistry.Instance.GetLobSystemInstancesLikeName("AdventureWorksSampleFromCode");
foreach (LobSystemInstance sysInstance in sysInsCollection)
{
if (sysInstance.Name == "AdventureWorksSampleFromCode")
{
mySysInstance = sysInstance;
break;
}
}
LobSystem ls = mySysInstance.LobSystem;
IAccessControlList acl = ls.GetAccessControlList();
//replace the domain and user names here
String currentIdentity = userName;
acl.Add(new IndividualAccessControlEntry(currentIdentity, BdcRights.SetPermissions | BdcRights.UseInBusinessDataInLists | BdcRights.SelectableInClients));
try
{
ls.SetAccessControlList(acl);
}
catch (AccessDeniedException)
{
//your exception handling code here
}
Console.WriteLine("Done");
}
}
}