User Level Access Dinamis pada yii framework

Sebelumnya saya sudah buat  cara membuat level access rule disini dan disini. Hanya saja cara tersebut akan sangat sulit di lakukan untuk sebuah informasi user(khususnya pelevelan) yang berubah-ubah dan berskala besar. Contoh, misal kita membuat web site untuk suatu universitas, dimana kita hanya mengizinkan mahasiswa pada fakultas tersebut yang boleh mengakses informasi pada fakultas nya sendiri. Nah, sepertinya ga mungkin kita buat user level access nya satu persatu untuk masing-masing fakultas mengingat fakultas pada suatu universitas sangatlah banyak dan besar kemungknan bisa terjadi perubahan pada informasi. Nah, maka dari itu kita akan lakukan dengan cara lain yang dapat melakukan hal tersebut dengan lebih mudah dan cepat.

Pada setiap website, biasanya kita akan membuat sebuah level access untuk halaman “profile user” dimana hanya user tersebut lah yang bisa mengakses informasi tentang dirinya. Untuk menerapkan hal tersebut, kita tidak dapat menggunakan “function accessRule()”(kalo ada yg bisa mohon di share yak :D) untuk membuat batasannya, tetapi kita dapat melakukannya dengan mengedit controller nya tepatnya di function nya masing-masing. Tapi sebelumnya pastikan pada file “protected/components/UserIdentity.php” terdapat function “getId” yang mengembalikain “id” user yang telah login:

	private $_id;
	public function getId()
	{
		return $this->_id;
	}

Fungsi “getId()” tentu dapat anda modifikasi sesuai dengan kebutuhan masing-masing misal getFakultas(),getLevel(), getTerserah(), dll..

Lalu pada controller yang ingin diberikan level access rule nya, buatlah pada function yang ingin diberikan level access nya beberapa modifikasi code seperti berikut:

	public function actionView($id)
	{
		if(Yii::app()->user->getid()==$id)
		{	
			$this->render('view',array(
				'model'=>$this->loadModel($id),
			));	
		}
		else
		{
			$this->redirect(array('salah'));
		}
	}

Penjelasan:

Disana dapat anda lihat anda pernyataan “if(Yii::app()->user->getId()==$id)”, nah itu dilakukan untuk mengizinkan hanya user yang memiliki profil tersebutlah yang dapat mengakses halaman tersebut. Jika tidak, maka user akan dilemparkan ke sebuah halaman “salah” yang sudah anda buat sendiri😀

Selesai, selamat mencoba…

Semoga membantu😀 …

16 Responses to User Level Access Dinamis pada yii framework

  1. arief says:

    mas jdi msalnya ada tabel user slah satu atributnya leveluser, saya mau ambil nilai dari atribut level user itu terus nilai itu di jadikan pembanding di access rule,misal:
    pas create kita pilih leveluser=2, nah di access rule biasanya kan ‘user’=>array(‘admin’),nah saya mau nya adminnya itu diganti dengan level user jd yg menentukan bisa tidaknya di akses bukan berdasarkan nama user, tp level user yg di ambil dari tabel user gmana mas caranya?
    terima kasih

  2. coba searching aja di blog ini tentang level akses.. itu udah ada kok mbak..

  3. arief says:

    tepatnyaa yg mana ya mas, udah banyak yg saya coba tentang level akses tp masih blum bisa,untuk kasus saya baiknya yang mana ya tutorialnya?

  4. coba liat di ebook saya aja gan.. disana lbih lengkap pnjelasannya..

  5. arief says:

    udah saya coba tp kok yg fungsi getLevelnya ga kbaca ya?
    CWebUser and its behaviors do not have a method or closure named “getLevel”
    gmana ya mas?
    trima kasih

  6. coba liat dulu tutor yg disini gan https://sabitlabscode.wordpress.com/2011/05/14/membuat-user-level-access-pada-yii/
    disana ada yg harus di set lagi di config nya..

  7. adam says:

    gan, bagaimana pengaturannya, agar hanya admin saja yang dapat melihat menu “operations” pada aplikasi CRUD???

  8. pda postingan di atas ada 2 link yang mengrah ke materi lain gan.. coba di buka aja link nya.. disana ada cara2 nya gan..
    kalo ga di ebook saya ada contoh aplikasi nya yang udah ada tentang itu gan..

  9. Park Dina says:

    kok g bsa y mas?udah sesuai dgn petunjuk d atas, tetep ja data yang tertampil msh global

  10. mksd ny global gimana mbak?

  11. kalo utk di controller, data nya memang ga di filter.. tapi level pengaksesan action nya yang di filter mbak.. kalo mau filter data, perlu di custom lagi di filter nya kalo gitu..

  12. vievie says:

    mas saya misalkan punya beberapa user dan di menubar terdapat submenu-submenu, setiap user berbeda akses menunya, supaya menu yg tidak boleh diakses oleh user tertentu tdk dpt terlihat/hidden disubmenu tsb gimana ya ngatur akses rulenya….
    –trims–

  13. coba lihat di ebook saya atau contoh aplikasi nya mbak. disana saya uda buat seperti itu..

  14. adrianus bonggakaraeng says:

    gan, saya udah berhasil membuat level access untuk tiga user (admin,teacher,&student), tpi gimana yah agar masing2 teacher&student bisa melihat profilnya masing2. mis. teacher “a” login dan hanya dpt mengakses profilnya. mohon bantuannya

  15. untuk kasus ini agan jangan pake user level access. jadi di actionnya dibuat if seperti
    if(Yii::app()->user->id==$id) sehingga setiap dia ngeliat profile yang bukan dia , it will rejected

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: