Procedimiento para agregar una entrada de control de acceso a un objeto de metadatos
Se deben conceder permisos a los usuarios para permitirles ejecutar métodos, modificar la configuración y establecer permisos en un objeto de metadatos. Este ejemplo de código muestra cómo usar el modelo de objetos para agregar entradas de control de acceso para objetos de metadatos. En el primer ejemplo se agrega una entrada de control de acceso para el usuario actual. En el segundo ejemplo se agrega un usuario mencionado en el ejemplo. Observe cómo se puede usar el carácter especial de canalización (|) para dar una combinación de derechos a los usuarios.
Ejemplo
En este ejemplo se agrega una entrada de control de acceso para el usuario actual y a un usuario especificado.
Requisitos previos
Asegúrese de que el proveedor de servicios compartidos ya está creado.
Cree una instancia de LobSystem y establezca los parámetros de conexión tal y como se muestra en Procedimiento para crear LobSystem mediante el modelo de objetos de administración.
Cree la entidad ProductModel tal y como se muestra en Procedimiento para crear una entidad mediante el modelo de administración de objetos.
Cree un método Finder tal y como se muestra en Procedimiento para crear un método y filtros mediante el modelo de objetos de administración.
Reemplace el valor constante EnterYourSSPNameHere del código con el nombre del proveedor de recursos compartidos.
Reemplace el valor constante userName en el formato domainname\\username.
Referencias del proyecto
Antes de ejecutar este ejemplo, agregue las siguientes referencias de proyecto al proyecto de código de aplicación de consola:
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");
}
}
}