重写权限系统

之前权限系统基于ColaUI和BDF2,现在其基础上进行改造

要求:
1.实现资源控制和权限控制
2.用户依据角色资源和权限,实现用户级资源和权限递减
3.资源控制主要控制页面和组件
4.权限主要控制数据层

重写部分:
角色表
角色页面表
角色页面组件表
角色权限表
用户页面表
用户页面组件表
用户权限表

角色表用于保存角色的基本信息
角色页面表用于保存该角色可查看的页面信息(基于菜单表递减)
角色页面组件表用于保存该角色可查看的页面内的组件信息(基于组件表递减)
角色权限表用于保存该角色可操作的数据信息(基于该账号所属机构现有数据的某些字段值递减)

用户页面表用于保存该用于不可看的页面信息(基于角色页面表)
用户页面组件表同上取反
用户权限表用于保存该用户可看的数据(基于角色权限表)

A表基于B表,则A表的值最大为B表的值

这些表的增删改并不是重点,重点是将设置的值接入系统

接入点:
1.用户登录后获取角色及其对应的菜单项(版本替换过程中还需保证不影响原来的权限系统)
2.点击菜单加载对应的页面信息时(页面权限判断)
3.页面加载时组件的过滤(组件权限的判断)
4.数据请求时数据的过滤(数据权限的判断)

注意:
1.页面组件及数据权限过滤时接口全都基于用户查询
2.菜单加载时需考虑对原系统的影响,避免线上系统出现问题
3.页面权限判断深入框架内部,需修改jar包实现接入;
  如没有找到接口,可暂将资源设置的结果集映射的原系统表进行替代
4.组件权限过滤已在“ColaUI组件过滤”中提出,可替换其查询路径进行接口替换
5.数据过滤基于账号所属机构,主要在Dao层进行限定

ColaUI组件过滤设置

ColaUI配合后端BDF2框架共同实现组件级权限控制

在请求页面资源时通过js代码对页面进行权限过滤
<!--测试组件-->
<div id='test'></div>
(function() {
	cola(function(model) {
        var role_resource_data={
            url:'/html/test.html',
            ids:['test']
        };
    //其它代码
    App.resetComponentAuth(role_resource_data);
  });
}).call(this);
注意事项:
1.对应id组件上方如果不加注释,那么在进行角色组件资源设置时显示的是id;
  添加注释后则显示注释中的内容
2.url对应值为要控制的页面路径,从webapp下开始写
3.ids为要控制的页面中的id组件集合,不写入则组件控制无效
4.在其他代码部分不能出现return,例如return model.widgetConfig({...});
  否则代码不执行最后一行,无法进行组件过滤
5.最后一行代码进行了数据库访问,对组件权限信息进行获取,并刷新页面