信息系统开发平台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

posted on 2010-01-07 19:53  周 金根  阅读(3636)  评论(5编辑  收藏

导航