博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
信息系统开发平台OpenExpressApp - 功能权限
阅读量:5810 次
发布时间:2019-06-18

本文共 1514 字,大约阅读时间需要 5 分钟。

 在中对RBAC以及在OEA中的涉及进行了简要介绍,上篇《》介绍了基本的用户管理,本篇继续讲解基于用户的功能权限管理,下一篇介绍数据权限。

部门管理

    部门相当于组织机构,企业的组织机构其实是很复杂的。其中岗位是分级别的,且上下级汇报关系的,还有代理授权等,公司的管理又分为矩阵式管理,既有部门,也根据产品线分为事业群管理的等。目前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);
}
}
本文转自 jingen_zhou 51CTO博客,原文链接:
http://blog.51cto.com/zhoujg/518659
,如需转载请自行联系原作者
你可能感兴趣的文章