Application Context: Namespace USERENV


Pada artikel sebelumnya, aku pernah mencoba memakai Virtual Privadate Database (VPD) dengan bantuan fungsi DBMS_RLS.ADD_POLICY. Dalam hal ini, aku membuat sebuah function yang menghasilkan predicate. Contoh function yang aku buat masih sangat sederhana sekali. Sekarang bagaimana jika aku ingin memeriksa nama user yang sedang login, di dalam function yang menghasilkan predicate? Aku bisa memakai application context. Dalam kasus ini, aku akan memakai namespace USERENV, yang menyediakan atribut SESSION_USER yang berisi nama user. Contoh fungsi yang menghasilkan predicate dengan memanfaatkan application context:


create or replace
FUNCTION simple_predicate (
  schm IN VARCHAR2, name IN VARCHAR2)
RETURN VARCHAR2 AS
  predicate VARCHAR2(2000);
  cur_user VARCHAR2(2000);
BEGIN
  cur_user:=sys_context('userenv', 'session_user');
  IF cur_user='SYS' THEN
    predicate := '1=1';
  ELSE
    predicate := 'tingkat_keamanan = 1';
  END IF;

  RETURN predicate;
END;
/

Sekarang, jika aku login dengan user SYS, aku bisa melihat seluruh isi tabel PROJEK, tetapi bila aku login sebagai user lain, aku hanya bisa melihat baris dengan tingkat_keamanan = 1.

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: