【Oracle APEX开发小技巧14】实现对按钮/操作的权限管控

  1. 对按钮的权限管控:
    效果展示:
    当前角色为查看组,无新增按钮,无删除操作


    当前角色为系统管理员,有新增按钮,有删除操作

    1. 需求背景:在后台角色中,有部分角色仅有查看权限,无增删改权限,此时就需要根据角色对按钮进行隐藏/显示管控。

    2. 实现过程:(前期配置工作已完成,各开发负责人只需操作第vi点即可)

      1. 在APEX应用→共享组件→应用程序项→创建新项ROLE_CODE

        在登录后存储函数新增对应变量v_role_code,从角色表中获取对应role_code,最后存储到应用程序项中
  1. 在切换角色的服务器端代码也要加上role_code,确保切换角色同步角色code

    1. 做完以上操作登录后就可以获取到角色code了

    2. 在应用→共享组件→授权方案→创建名为“系统需求编辑权限-查询角色CODE(返回布尔值)”的方案,代码如下

DECLARE
  L_AUTH NUMBER; -- 去掉长度限制,避免溢出
BEGIN
  -- 查询用户当前角色CODE是否为VIEW_REPORT
  SELECT COUNT(1)
    INTO L_AUTH
    FROM XXX_USER_ROLE UR
    LEFT JOIN XXX_ROLE R ON UR.ROLE_ID = R.ROLE_ID
   WHERE R.ROLE_TYPE <> 'VIEW_REPORT' -- 查询角色CODE不为VIEW_REPORT的数量
     AND UR.USER_ID = :MPF_USER_ID
     AND UR.DEL_FLAG = 0
     AND UR.TENANT_ID = :USER_TENANT
     AND R.DEL_FLAG = 0
     AND R.ROLE_ID = :ROLE_ID;

  -- 根据查询结果返回 TRUE 或 FALSE
  IF L_AUTH >= 1 THEN
    RETURN TRUE; -- 用户当前角色CODE不为VIEW_REPORT,返回 TRUE
  ELSE
    RETURN FALSE; -- 用户当前角色CODE为VIEW_REPORT,返回 FALSE
  END IF;
END;
  1. 在需要管控的按钮→安全性 选择刚刚创建的授权方案即可

  2. 对操作的权限管控:

  3. 需求背景:与按钮权限同理,在后台角色中,有部分角色仅有查看权限,无增删改权限,需要根据角色对操作内的权限进行隐藏/显示管控。

  4. 具体实现:

    1. OPERATION操作列→设置 HTML表达式→新增一个动态CSS类,is_modify_X 后缀X使用动态变量&IS_HIDE.标识

    2. 在交互式网格SQL定义IS_HIDE,定义依是登录用户的当前角色code,类型设置为隐藏

    3. 在页→CSS 内嵌 进行样式和显示/隐藏的设置

.is_modify_1 {
  color: red;
  /* text-align: center; */
}

.hide_btn {
    display: none;
}
.is_modify_0  {
    display: none;
}

到这里就大功告成了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值