Project Server PSI的简单调用方式:权限控制

相信大家都见过PWA的权限级别,非常细,如下图,只是一部分:

那么在自己二次开发时候如何快速判断当前用户是否拥有某个权限或者一些权限呢:

PWA默认情况下有3种权限判断,首先是全局权限判断,如上图示意,其次是对象级别的权限,比如在项目或者任务上有什么类型的权限,比如察看明细或者打开页面等;第三是资源类的权限判断,我理解成安全类别或者安全组。如下图:

代码片段如下:

public override bool CheckPagePermission()

{

if (PjContext.PSI.SecurityWebService.CheckUserGlobalPermission(PSSecurityGlobalPermission.ViewResourcePlan))

{

this._ProjectDeleted = false;

if (base.PjContext.PSI.PWAWebService.ProjectCheckProjectExistsInWorkingStore(this._ProjUid))

{

Return PjContext.PSI.SecurityWebService.CheckUserObjectPermission(this._ProjUid, PSSecurityObjectType.Project, PSSecurityCategoryPermission.ViewProjectDetailsInProjectCenter);

}

this._ProjectDeleted = true;

return false;

}

return false;

}

//上面代码首先检查全局权限是否有查看企业资源权限,其次检查当前登录用户在指定存在的项目上是否有查看项目明细的权限,否则不能做进一步操作

 

如果是多重权限判断,一般上面的方法都支持数组参数,返回的也是标识数组:

Guid[] globalPermissionUids = new Guid[] { PSSecurityGlobalPermission.NewTaskAssignment };

bool[] flagArray = PjContext.PSI.SecurityWebService.CheckUserGlobalPermissions(globalPermissionUids);

this.fAllowAddTask = true;

this.fAllowAddAssn = flagArray[0];

if (!this.fAllowAddTask && !this.fAllowAddAssn)

{

LeavePage();//Say sorry!

}

//以上代码检查当前用户是否有创建任务的权限,否则导向错误页面:

 

public static void LeavePage(Page page)

{

string url;

if ((SiteMap.CurrentNode == null) || (SiteMap.CurrentNode.ParentNode == null))

{

url = SiteMap.RootNode.Url;

}

else

{

url = SiteMap.CurrentNode.ParentNode.Url;

}

SPUtility.Redirect(url, SPRedirectFlags.UseSource, HttpContext.Current);

}

msn: pccai1983@hotmail.com
posted @ 2011-06-19 23:16 pccai 阅读(70) 评论(0) 编辑 收藏
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 2084865 lVli4fkOS9w=

公告

Dict.CN 在线词典, 英语学习, 在线翻译

昵称:pccai
园龄:5年11个月
粉丝:7
关注:2
<2011年6月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

搜索

 

技术空间

技术中转站

积分与排名

  • 积分 - 72315
  • 排名 - 1456

最新评论

阅读排行榜

评论排行榜

推荐排行榜

Dict.CN 在线词典, 英语学习, 在线翻译