2017-01-08 25 views
0

我想在我的應用程序中創建自定義授權方案。 1. isAdmin 2. isStaff 3. isMemberoracle頂點定製授權方案

所以我創造了這些計劃,我也是在APEX_APPLICATION_PRIV(管理員,工作人員,會員)

通過訪問控制頁面,我可以授權創建三個條目現在每個用戶的特權之一,但如何將每個方案連接到它的特權,所以具有授權方案的頁面是成員將只出現給那些有特權的成員?

回答

0

我想我爲什麼不爲你的ACL使用默認值(管理員,編輯,視圖)而不是經歷自定義問題的麻煩感到困惑。

難道您不能像默認的ACL授權方案(管理員,編輯,查看)那樣表示您的授權方案(管理員,員工,成員)。管理員 - 管理員,員工 - 編輯和成員 - 視圖。似乎很少痛苦。

Here is the oracle documentation.

編輯: 這裏是PL/SQL代碼返回用於由ACL創建缺省的授權方案「管理員」一個布爾值。

declare 
    l_setup_id number; 
    l_mode  varchar2(50); 
    l_priv  varchar2(50); 
begin 
    if apex_application.is_custom_auth_page then 
    return true; 
    end if; 

    for c1 in (select id, application_mode 
      from apex_access_setup 
      where application_id = :app_id) 
    loop 
    l_setup_id := c1.id; 
    l_mode := c1.application_mode; 
    end loop; 

    if (l_mode = 'ALL') or (l_mode is null) then 
    return true; 
    end if; 

    for c1 in (select admin_privileges 
      from apex_access_control 
      where upper(admin_username) = upper(:app_user) 
      and setup_id = l_setup_id) 
    loop 
    l_priv := c1.admin_privileges; 
    end loop; 

    if nvl(l_priv,'x') = 'ADMIN' then return true; end if; 
    return false; 
end; 

在你的情況我想你可以只更換「管理」與「isAdmin」(或無論你在你的數據庫中指定的話)。然後有額外的PL/SQL函數適當地爲職員和成員返回真或假。

我相信你每個頁面/項目只能有一個授權方案,所以記住這一點。默認授權方案通過管理員能夠訪問具有編輯和查看權限的所有用戶來處理。具有編輯權限的用戶可以訪問具有查看權限的所有用戶。最後,具有查看權限的用戶只能訪問具有查看權限的頁面/項目(或者沒有指定授權方案的頁面)。