记录一下如何在sharepoint server 2013自定义列表中,使用eventhandle控制自定义列表custom list的条目item权限。

///<summary>

///正在添加项.

///</summary>

public override void ItemAdding(SPItemEventProperties properties)

{

base.ItemAdding(properties);

SPSecurity.RunWithElevatedPrivileges(delegate()

{

if(properties.ListTitle =="工作日报")

{

string DepartmentName ="";

if(properties.AfterProperties["Department"] !=null)

{

DepartmentName =properties.AfterProperties["Department"].ToString();

}

if (DepartmentName =="IT部门")

{

properties.ErrorMessage="该部门暂时不能填写日报!";

properties.Cancel =true;

}

}

});

}

///<summary>

///已添加项.

///</summary>

public override void ItemAdded(SPItemEventProperties properties)

{

base.ItemAdded(properties);

SPSecurity.RunWithElevatedPrivileges(delegate()

{

if(properties.ListTitle =="工作日报")

{

SPSite site=newSPSite(properties.SiteId);

SPWeb web=site.OpenWeb();

web.AllowUnsafeUpdates = true;

SPList list =web.Lists[properties.ListId];

SPListItem item =list.GetItemById(properties.ListItemId);

//权限断开,并且移除掉其它权限

if(!item.HasUniqueRoleAssignments)

{

item.BreakRoleInheritance(false);

}

//添加用户权限

SPUser CurrentUser =web.EnsureUser(properties.UserLoginName);

SPRoleAssignment MyRoleAssignment =newSPRoleAssignment(CurrentUser);

MyRoleAssignment.RoleDefinitionBindings.Add(web.RoleDefinitions.GetByType(SPRoleType.Contributor));

item.RoleAssignments.Add(MyRoleAssignment);

//添加上级领导权限

//1.根据当前用户,获取到该用户的上级领导

SPList EmployRelationList= web.Lists["员工关系表"];

SPQuery query =newSPQuery();

query.Query = @"<Where><Eq><FieldRefName=""EmployeeId"" LookupId=""TRUE""/><Value Type=""User"">" +properties.CurrentUserId +"</Value></Eq></Where>";

SPListItemCollection sic =EmployRelationList.GetItems(query);

DataTable dt =sic.GetDataTable();

string LeaderUserId =string.Empty;

if (dt !=null &&dt.Rows.Count > 0)

{

LeaderUserId = dt.Rows[0]["Leader"].ToString();

}

//2.将当前上级领导添加到该项目权限中

if (LeaderUserId !=null &&LeaderUserId!="")

{

SPUser LeaderUser =web.EnsureUser(LeaderUserId);

MyRoleAssignment =newSPRoleAssignment(LeaderUser);

MyRoleAssignment.RoleDefinitionBindings.Add(web.RoleDefinitions.GetByType(SPRoleType.Reader));

item.RoleAssignments.Add(MyRoleAssignment);

}

item.Update();

web.Dispose();

}

});

}

sharepoint 2013 自定义列表eventhandle权限控制的更多相关文章

  1. 每日学习心得:SharePoint 2013 自定义列表项添加Callout菜单项、文档关注、SharePoint服务端对象模型查询

    前言: 前一段时间一直都比较忙,没有什么时间进行总结,刚好节前项目上线,同时趁着放假可以好好的对之前遇到的一些问题进行总结.主要内容有使用SharePoint服务端对象模型进行查询.为SharePoi ...

  2. SharePoint 2013 自定义扩展菜单

    在对SharePoint进行开发或者功能扩展的时候,经常需要对一些默认的菜单进行扩展,以使我们开发的东西更适合SharePoint本身的样式.SharePoint的各种功能菜单,像网站设置.Ribbo ...

  3. SharePoint 2013 自定义扩展菜单(二)

    接博文<SharePoint 2013 自定义扩展菜单>,多加了几个例子,方便大家理解. 例七 列表设置菜单扩展(listedit.aspx) 扩展效果 XML描述 <CustomA ...

  4. 在C#开发中如何使用Client Object Model客户端代码获得SharePoint 网站、列表的权限情况

    自从人类学会了使用火,烤制的方式替代了人类的消化系统部分功能,从此人类的消化系统更加简单,加速了人脑的进化:自从SharePoint 2010开始有了Client Side Object Model ...

  5. 【FBA】SharePoint 2013自定义Providers在基于表单的身份验证(Forms-Based-Authentication)中的应用

    //http://www.cnblogs.com/OceanEyes/p/custom-provider-in-sharepoint-2013-fba-authentication.html 由于项目 ...

  6. [FBA]SharePoint 2013自定义Providers在基于表单的身份验证(Forms-Based-Authentication)中的应用

    //http://tech.ddvip.com/2014-05/1401197453210723.html 由于项目的需要,登录SharePoint Application的用户将从一个统一平台中获取 ...

  7. SharePoint 2013自定义Providers在基于表单的身份验证(Forms-Based-Authentication)中的应用

    由于项目的需要,登录SharePoint Application的用户将从一个统一平台中获取,而不是从Domain中获取,所以需要对SharePoint Application的身份验证(Claims ...

  8. SharePoint 2013:自定义ECB菜单项的添加

    本文分别介绍了两种常用的添加ECB菜单项的方式. 声明式创建 这也是微软最佳实践推荐的方式.在VS中创建一个SharePoint空解决方案,并添加一个“空元素”类型的SPI. 在Elements.xm ...

  9. 自定义Spring Security权限控制管理(实战篇)

    上篇<话说Spring Security权限管理(源码)>介绍了Spring Security权限控制管理的源码及实现,然而某些情况下,它默认的实现并不能满足我们项目的实际需求,有时候需要 ...

随机推荐

  1. Installshield获取安装包版本的系统变量是IFX_PRODUCT_VERSION

    原文:Installshield获取安装包版本的系统变量是IFX_PRODUCT_VERSION Installshield获取安装包版本的系统变量为IFX_PRODUCT_VERSION 当笔记记下 ...

  2. android:Fragment动画的东西

    最近很多人来Fragment动画是很感兴趣,我将是一个样本给大家看. 既然做,我会做动画以下类型: 注入弹出动画:从""进入.从"上下左右"弹出,当然,你怎么组 ...

  3. Play framework 2.0

    Play framework 2.0北京时间3月14日消息,根据Play framework官方网站消息,目前Play framework 2.0正式版已经发布.新版本的Play framework进 ...

  4. 赠书《JavaScript高级程序设计(第三版)》5本

    本站微博上正在送书<JavaScript高级程序设计>走过路过的不要错过,参与方式,关注本站及简寻网+转发微博:http://weibo.com/1748018491/DoCtp6B8r ...

  5. 给Angularjs配上Requirejs

    给Angularjs配上Requirejs 需要考虑的事情: 1.js.css.template都按需加载,js主要就controller: * js和css都可以用requirejs和它的插件解决, ...

  6. Javascript多线程引擎(一)

    Javascript多线程引擎(一) Javascript 天生是单线程的语言, 不支持synchronized等线程操作, 但是这便不妨碍Javascript作为web语言中最具有魅力语言之一. 虽 ...

  7. DEBUG不能进断点 “exited with code -1073741515”

    需要把相关的DLL文件加入到项目对应的DEBUG路径下 IDE :Qt Creator 系统:Win7

  8. 利用自定义的AuthenticationFilter实现Basic认证

    [ASP.NET MVC] 利用自定义的AuthenticationFilter实现Basic认证   很多情况下目标Action方法都要求在一个安全上下文中被执行,这里所谓的安全上下文主要指的是当前 ...

  9. IIS发布网站,浏览网站时候,出现 试图加载格式不正确的程序。

    异常来自HRESULT:0x8007000B 缘由:在64位操作系统下IIS发布32位的项目,报“项目依赖的dll无法读取,试图加载格式不正确的程序”错误. 原因:程序集之间的通讯要么全是64位环境下 ...

  10. window wamp下xhprof的安装使用,Graphviz配置

    在新的工作安排下来前赶紧把手上工作优化下,本来是靠xdebug+grindview来的,不过还是麻烦,就换上这个轻量级的性能测试了.网上搜的大多都是lamp环境下的,wamp下的倒是不多,而且不好用, ...