sharepoint文档库权限控制
sharepoint⽂档库权限控制
在某⼀项⽬中,⽤户有如下需求:⽤户上传到⽂档库的⽂件或是在⽂档库中新建的⽂件夹,他们能够⾃⼰设置权限,并且新上传的⽂件或是新建的⽂件夹对于⾃⼰来说拥有“完全控制权限”,对其他⽤户只拥有读取权限,该⽤户有权让其他⽤户拥有“参与讨论”或是“权限设置”的权限。
public class NewDocumentControlPermission : SPItemEventReceiver
{
public override void ItemAdded(SPItemEventProperties properties)
人们从动物身上得到的启示发明了什么
{
//base.ItemAdded(properties);
try
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using(SPSite site = new SPSite(properties.SiteId))
{
using(SPWeb web = site.OpenWeb(properties.OpenWeb().ID))
{
web.AllowUnsafeUpdates = true;
SPUser user = web.Users.GetByID(properties.CurrentUserId);
SPListItem item = properties.ListItem;
//获得触发此事件的⽤户的登录名
SPRoleAssignment ra1 = new SPRoleAssignment(web.EnsureUser(user.LoginName));
ra1.RoleDefinitionBindings.Add(web.RoleDefinitions["完全控制"]);
item.BreakRoleInheritance(true);
item.RoleAssignments.Add(ra1);
for(int count = 0; count < item.RoleAssignments.Count; count++)
{
SPRoleAssignment spra = item.RoleAssignments[count];
for(int i = 0; i < spra.RoleDefinitionBindings.Count; i++)
{
//if (spra.RoleDefinitionBindings[i].Name == "受限访问")
//{
//    item.BreakRoleInheritance(true);
//    item.RoleAssignments.Remove(spra.Member);
/
/}
高考怎样填报志愿
if(spra.RoleDefinitionBindings[i].Name == "参与讨论")
{
if(!spra.RoleDefinitionBindings.Contains(web.RoleDefinitions["读取"]))
{
spra.RoleDefinitionBindings.Add(web.RoleDefinitions["读取"]);
}
spra.RoleDefinitionBindings.Remove(web.RoleDefinitions["参与讨论"]);
//item.RoleAssignments[count].RoleDefinitionBindings[i].Update();
spra.Update();
item.SystemUpdate(false);
}
else if(spra.RoleDefinitionBindings[i].Name == "⽤户权限")
{
if(!spra.RoleDefinitionBindings.Contains(web.RoleDefinitions["读取"]))
{
spra.RoleDefinitionBindings.Add(web.RoleDefinitions["读取"]);
}
spra.RoleDefinitionBindings.Remove(web.RoleDefinitions["⽤户权限"]);
//spra.RoleDefinitionBindings[i].Update();
spra.Update();
item.SystemUpdate(false);
}
}
}
web.AllowUnsafeUpdates = false;
}
}
});
}
catch{ }
}
}
另⼀个是针对于上传新⽂件的EventHandler,此EventHandler的写法与列表的EventHandler写法⼤不相同,废话少说,代码如下:
public class ControlPermission : IListEventSink
{
void IListEventSink.OnEvent(Microsoft.SharePoint.SPListEvent listEvent)
{
try
{
if(listEvent.Type == SPListEventType.Insert)//增加{}
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
SPWeb web = listEvent.Site.OpenWeb();
SPFile file = web.GetFile(listEvent.UrlAfter);
SPListItem item = file.Item;
//添加个⼈完全权限
SPUser user = file.Author;
SPRoleAssignment sa = new SPRoleAssignment((SPPrincipal)user);
胆小过街是什么生肖
SPRoleDefinition role = web.RoleDefinitions["完全控制"];
sa.RoleDefinitionBindings.Add(role);
item.BreakRoleInheritance(true);
item.RoleAssignments.Add(sa);
//修改部门全体为读取权限
for(int count = 0; count < item.RoleAssignments.Count; count++)
{
SPRoleAssignment spra = item.RoleAssignments[count];
for(int i = 0; i < spra.RoleDefinitionBindings.Count; i++)
纤维素是什么
{
//if (spra.RoleDefinitionBindings[i].Name == "受限访问")
//{
//    item.BreakRoleInheritance(true);
//    item.RoleAssignments.Remove(spra.Member);
//}
if(spra.RoleDefinitionBindings[i].Name == "参与讨论")
{
if(!spra.RoleDefinitionBindings.Contains(web.RoleDefinitions["读取"]))                                    {
spra.RoleDefinitionBindings.Add(web.RoleDefinitions["读取"]);
}
spra.RoleDefinitionBindings.Remove(web.RoleDefinitions["参与讨论"]);                                    //item.RoleAssignments[count].RoleDefinitionBindings[i].Update();
大地之歌 马勒spra.Update();
item.SystemUpdate(false);
}
else if(spra.RoleDefinitionBindings[i].Name == "⽤户权限")
{
if(!spra.RoleDefinitionBindings.Contains(web.RoleDefinitions["读取"]))                                    {
spra.RoleDefinitionBindings.Add(web.RoleDefinitions["读取"]);
}
结婚登记查询
spra.RoleDefinitionBindings.Remove(web.RoleDefinitions["⽤户权限"]);                                    //spra.RoleDefinitionBindings[i].Update();
spra.Update();
item.SystemUpdate(false);
}
}
}
});
}
}
catch{ }
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。