权限控制

一、功能权限(包括按钮权限、报表权限)

  1. 功能权限包括三部分:
  2. 1)模块的CRUD,导出、统计、批量导入、批量修改等
  3. 2)模块的自定义按钮
  4. 3SQL报表:每一个报表有查看和导出权限
  5. 可在后台为不同的角色分配不同的功能权限。

登录图片

二、纵向:字段权限

(1)开启字段权限,配置文件:

/dodo/src/main/java/com/gentools/dodo_generate_config.properties

  1. # 配置开启字段权限
  2. dodo.generate.field.considerright=true

(2)生成数据和代码

  1. 执行main方法,生成数据
  2. src/main/java/com/gentools/Step_2_MakeBaseData.java
  1. 执行main方法,生成代码
  2. src/main/java/com/gentools/Step_4_GenerateCode.java

(3)后台为不同角色分配不同的字段权限 登录图片

三、横向:行级权限

  1. 通过 @DodoRowRight 注解来实现,有四种用法
  2. 假如有个POJOOrganization(组织机构)
  3. 假如有个POJOOrgPerson(组织机构下的人员)

(1)限制只能访问归属于自己的组织机构数据

  1. //(1)在 Organization 中添加字段
  2. @DodoField(sortSeq = 1, name = "管理员", isAdmin = true)
  3. private Admin orgAdmin;
  4. //(2)在 Organization 上添加注解
  5. @DodoRowRight(entityProperty = "orgAdmin")
  6. //(3)生成代码

(2)限制只能访问自己所属的组织机构

  1. //(1)在 Admin 中添加字段
  2. @DodoField(sortSeq = 1, name = "管理员组织")
  3. private Organization adminOrg;
  4. //(2)在 Organization 上添加注解
  5. @DodoRowRight(entityProperty = "this", principalKey = "myOrg")
  6. //(3)生成代码

(3)限制只能访问自己组织下的人员

  1. //(1)在 Admin 中添加字段
  2. @DodoField(sortSeq = 1, name = "管理员组织")
  3. private Organization adminOrg;
  4. //(2)在 OrgPerson 中添加字段
  5. @DodoField(sortSeq = 1, name = "归属组织")
  6. private Organization ownOrg;
  7. //(3)在 OrgPerson 上添加注解
  8. @DodoRowRight(entityProperty = "ownOrg", principalKey = "adminOrg")
  9. //(4)生成代码

(4)限制只能访问级别为2和3的组织信息

  1. //(1)在 Organization 中添加字段
  2. @DodoField(sortSeq = 1, name = "组织级别")
  3. private Integer orgLevel;
  4. //(2)在 Organization 上添加注解
  5. @DodoRowRight(entityProperty = "orgLevel", principalKey = "checkOrgLevel", principalKeyShowName = "可访问的组织级别")
  6. //(3)生成代码
  7. //(4)添加或者编辑角色信息,在`扩展属性`里找到字段:`可访问的组织级别` 进行编辑,填入:`2,3` 即可完成限制

四、权限动态更新

以下五种情况下,会动态更新系统元数据、当前登录的管理员的权限信息 无需重启系统或者退出重新登录。

  1. 1SQL报表添加、编辑
  2. 2)管理员编辑
  3. 3)角色编辑
  4. 4)权限增加、删除、修改
  5. 5)菜单增加、删除、修改