我用卡片模板构建了一些操作菜单(基于经典报告)。我使用 3 张卡将用户重定向到应用程序中的其他页面。可以为这张卡配置一些条件吗?我需要类似的授权方案解决方案,其中一些用户只能看到两张卡,而一些具有其他授权级别的用户可以看到第三张卡。
我尝试使用授权架构,就像在经典报告中一样,但它不起作用。
报表查询基于简单的sql:
select '' as CARD_TITLE
, '' as CARD_INITIALS
, '' as CARD_LINK
, 1 as ORDER_
from TABEL_A
union all
select '' as CARD_TITLE
, '' as CARD_INITIALS
, '' as CARD_LINK
, 2 as ORDER_
from TABEL_A
union all
select '' as CARD_TITLE
, '' as CARD_INITIALS
, '' as CARD_LINK
, 3 as ORDER_
from TABEL_A
ORDER BY ORDER_;
APEX 19.1
APEX 中的授权方案是一个根据用户权限启用/禁用其他组件(页面/区域/按钮/项目/列/等...)的组件。它们不适合条带化数据,但您可以通过使用基于授权方案的返回值的页面或应用程序项来使用解决方法。
EMP/DEPT 表上的示例。用例是具有“管理员”权限的用户可以看到所有行,其他用户只能看到
JOB = 'CLERK'
的行。
IF apex_authorization.is_authorized('Administrator') THEN
RETURN 'YES';
ELSE
RETURN 'No';
END IF;
SELECT *
FROM emp
WHERE :P1_IS_ADMINISTRATOR = 'YES' OR
job = 'CLERK'
此技术的另一个用途是有条件地显示列值。如果管理员权限的用户可以看到所有人的工资,而其他用户只能看到职位为“CLERK”的用户的工资,那么可以通过在 select 子句中使用该页面项来解决
SELECT empno
,ename
,job
,mgr
,hiredate
,CASE WHEN JOB = 'CLERK' THEN TO_CHAR(sal)
WHEN :P1_IS_ADMINISTRATOR = 'YES' THEN TO_CHAR(sal)
ELSE 'above your paygrade'
END as sal
,comm
,deptno
FROM emp;