zoukankan      html  css  js  c++  java
  • 信息系统开发平台OpenExpressApp - 功能权限

      在《信息系统开发平台OpenExpressApp - 用户权限模块设计》中对RBAC以及在OEA中的涉及进行了简要介绍,上篇《信息系统开发平台OpenExpressApp - 用户管理》介绍了基本的用户管理,本篇继续讲解基于用户的功能权限管理,下一篇介绍数据权限。

    部门管理

        部门相当于组织机构,企业的组织机构其实是很复杂的。其中岗位是分级别的,且上下级汇报关系的,还有代理授权等,公司的管理又分为矩阵式管理,既有部门,也根据产品线分为事业群管理的等。目前OEA只是简单的实现了最基本的一种模式。部门下面挂接岗位,这是部门+岗位=角,角色下挂接人和功能权限,后面将增加数据权限。以下为权限相关的类图:

    其中,OrgPisitionOperation为角色的功能权限对象,功能对象Operation引用了CommandBase,所以OEA的功能权限中显示可管理的功能是所有的Command,包括toolbar上的以及右键菜单上的命令,具体实现就不说了,大家以后可以去看具体代码。

    功能权限

    PBS模板界面如下图所示:

    在【功能权限】显示如下,左边会列出系统所有模块,右边列出的是每个模块下的所有可控制的对象,在根对象会多出一个【打开模块】内置权限,后一小节会讲一下:

      这些功能都是我们编写的Command以及OEA内置的Command,也就是在界面能够看到的按钮、菜单等都可以控制。目前还不提供快捷方式设置,如设置可更改,则自动把添加、添加子等一并修改。

      当设置后,再次登录时,不允许操作的功能,AutoUI不会自动生成这些命令。

    private static void CreateCommandsForToolBar(ToolBar toolbar, Type boType, ObjectView view, BoInfoOperationList commands)
    {
           ......
    for (int i = 0, c = commands.Count; i < c; i++)
    {
    var command
    = commands[i].Operation.Command;

    //考虑权限
    if (!(Csla.ApplicationContext.User.Identity as OEAIdentity).HavePermissionOnOperation
                (boInfo.Id, new
    Guid(command.Id)))
    continue;

    打开模块权限

      登录系统时,系统需要根据当前用户来生成模块列表。第一张图为所有功能列表,在第二张图表示的【部门管理】的【功能权限】中对业务对象去除了【打开模块】功能时,再次登录后看到图三模块列表。

    //获取模块列表数据源
    IList<BusinessObjectInfo> modules = new List<BusinessObjectInfo>();
    if (Csla.ApplicationContext.User.Identity.IsAuthenticated)
    {
    foreach (var item in ApplicationModel.Modules)
    {
    if ((Csla.ApplicationContext.User.Identity as OEAIdentity).HavePermissionOnOperation
                  (item.Id, new
    Guid(CommandNames.OpenModule)))
    modules.Add(item);
    }
    }

    更多内容: 开源信息系统开发平台之OpenExpressApp框架.pdf

  • 相关阅读:
    优秀IT技术文章集(最新)(高质量)
    大型网站系统架构演化之路
    一起学Maven
    Drupal8 新建第一个模块
    理解依赖注入(Dependency Injection)
    Yii2 模块module笔记
    Drupal views 学习之筛选器
    Drupal views 学习之初识
    Drupal views 中合并显示字段
    解读python手册的例子a, b = b, a+b
  • 原文地址:https://www.cnblogs.com/zhoujg/p/1641502.html
Copyright © 2011-2022 走看看