zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    sigaction函数解析
    实战Nginx与PHP(FastCGI)的安装、配置与优化
    Linux下Nginx+PHP 简单安装配置
    Nginx安装配置PHP(FastCGI)环境的教程
    Linux上配置Nginx+PHP5(FastCGI)
    @JoinTable和@JoinColumn
    Spring Data JPA 之 一对一,一对多,多对多 关系映射
    MyChrome制作Chrome浏览器便携版
    注解@CrossOrigin解决跨域问题
    MySQL查看表结构及查看建表语句
  • 原文地址:https://www.cnblogs.com/pccai/p/2084865.html
Copyright © 2011-2022 走看看