2011-10-12 82 views
1

我已在sharepoint 2007中创建了启用电子邮件的文档库。我们的客户在本文档中使用了Crystal报表并存储了报表。图书馆。我现在在该库中有大约900个文档,并且客户端要求我提供明智的权限。他们使用员工ID命名文件。他们希望这些文件对适当的员工和他/她的秘书是可见的。sharepoint文档库中的明智权限

任何人都可以帮助我如何实现这个编程?有没有适当的方式来做到这一点?

感谢,

回答

0

您可以创建一个event handler将打破文件权限继承和改变你需要的权限。

另一种选择是将文件移动到预先配置了您想要的权限的文件夹(甚至单独的文档库)。

第一个选项更容易实现,但是安全管理可能变得......凌乱。

Here是让你开始打破和设置文档权限的一些代码。

public string ItemPermission(string SitePath) 
    { 
     string ReturnVal = ""; 

     try 
     { 
      SPSite WebApp = new SPSite(SitePath); 
      SPWeb Site = WebApp.OpenWeb(); 
      SPList list = Site.Lists["TestDocLib"]; 
      SPListItem item = list.Items[0]; 
      SPRoleDefinition RoleDefinition = Site.RoleDefinitions.GetByType(SPRoleType.Contributor); 
      SPRoleAssignment RoleAssignment = new SPRoleAssignment("<domain>\\<user>", "email", "name", "notes"); 

      RoleAssignment.RoleDefinitionBindings.Add(RoleDefinition); 

      if(!item.HasUniqueRoleAssignments) 
      { 
       item.BreakRoleInheritance(true);     
      } 

      item.RoleAssignments.Add(RoleAssignment); 
      item.Update(); 
     } 
     catch (Exception ex) 
     { 
      ReturnVal += "Permission not set, reason: " + ex.Message; 
     } 
     return ReturnVal; 
    } 
+0

如果我利用这段代码,我如何给大约900人提供唯一的权限? – user346514

+0

我会将详细信息放在数据库中以管理所涉及的排列,并通过调用获取我想要迭代的数据。 – Nat

+0

但是如果我自己做了整件事情,我会将用户设置为针对这些组的常见访问要求和权限文件夹组。 – Nat

0

无需编写代码,您可以创建为每个员工一个文件夹和文件夹权限设置为仅由该员工和管理人员访问。

对于经理,您仍然可以制作视图,以显示所有没有文件夹的列表项目。