2.5 IS_ROLE_REMOVED_FROM_USERファンクション
このファンクションは、ロールがユーザーから削除されているかどうかを確認します。ユーザーの新しいロールIDのリストから特定のロールが削除されている場合、このファンクションはTRUE
を返します。
このファンクションは、ユーザーがp_role_static_id
で識別されるロールを自分自身から削除できないようにするために使用されます。
構文
APEX_ACL.IS_ROLE_REMOVED_FROM_USER (
p_application_id IN NUMBER DEFAULT apex_application.g_flow_id,
p_user_name IN VARCHAR2,
p_role_static_id IN VARCHAR2,
p_role_ids IN apex_t_number )
RETURN BOOLEAN;
パラメータ
パラメータ | 説明 |
---|---|
p_application_id |
ユーザーのロール・リストから特定のロールが削除されているかどうかを確認するためのアプリケーションID。デフォルトは、現在のアプリケーションです。 |
p_user_name |
確認するアプリケーション・ユーザーの大/小文字を区別しない名前。 |
p_role_static_id |
削除されているかどうかを確認するロールの静的IDの名前(大/小文字の区別なし)。 |
p_role_ids |
ユーザーに割り当てられているNUMBER型の新しいロールIDの配列。 |
戻り値
p_user_name
が現在p_role_static_id
で識別されるロールを持っているが、p_role_ids
で識別されるロールにp_role_static_id
で識別されるロールが含まれていない場合、TRUE
を戻します。
その他の場合はすべてFALSE
を戻します。
例
次の例では、IS_ROLE_REMOVED_FROM_USERファンクションを使用して、ADMINISTRATOR
ロールを持つアプリケーションの現在のユーザーが、アプリケーションへのアクセスを更新または削除する際にロールから自分自身を削除しないようにします。
BEGIN
IF :P1_USER_NAME = :APP_USER
and apex_acl.is_role_removed_from_user (
p_application_id => :APP_ID,
p_user_name => :APP_USER,
p_role_static_id => 'ADMINISTRATOR',
p_role_ids => apex_string.split_numbers(
p_str => case when :REQUEST = 'DELETE' THEN
null
ELSE
:P1_ROLE_IDS
END,
p_sep => ':') ) THEN
raise_application_error(-20001, 'You cannot remove administrator role from yourself.' );
END IF;
END;
親トピック: APEX_ACL