Anda di halaman 1dari 2

Andrea Stevens Karnyoto (CV. Anugrah Empat Pilar) andrekarnyoto@yahoo.com/andre@empatpilarweb.co.

id(FB: Karnyoto Andre )

Selamat siang teman2, kemarin saya mencoba bagaimana menggunakan


class UserIdentity extends CUserIdentity

Dalam yii framework, nah sebenarnya saya sdh mempunyai table yang saya beri nama Tabelpengguna, dalam Tabelpengguna ini ada field status yang menadakan apakah dy administrator, reseller ataukah user biasa, dalam kasus ini status saya buat berupa interger administrator=1, reseller=2 dan user = 3. Nah sekarang bagaimana caranya saya buat agar pada saat login dan berhasil maka status itu akan disimpan dalam sebuah variable yang dapat dibaca dihampir seluruh bagian yii??

Penyelesaian : Pertama2, saya create dulu model Tabelpengguna menggunakan failitas CRUD, tapi hanya model aja bukan yang komplet. Lalu pada file \protected\models\Tabelpengguna.php saya tambahkan beberapa baris program seperti dibawah ini :
public function validatePassword($password) { return $this->katasandi === $password; }

Setelah itu pastikan bahwa file \protected\controllers\SiteController.php ada baris program seperti ini
public function filters() { return array( 'accessControl', // perform access control for CRUD operations ); }

Setelah itu edit berkas \protected\components\UserIdentity.php, untuk kasusu saya sih yang harus saya simpan adalah Id, email dan status, jadi saya buat seperti ini :
<?php class UserIdentity extends CUserIdentity { private $_id; public function authenticate() { $username = strtolower($this->username); $user = Tabelpengguna::model()->find('LOWER(email)=?',

Andrea Stevens Karnyoto (CV. Anugrah Empat Pilar) andrekarnyoto@yahoo.com/andre@empatpilarweb.co.id(FB: Karnyoto Andre )

array($username)); if( $user===null ) $this->errorCode=self::ERROR_USERNAME_INVALID; else if(!$user->validatePassword($this->password)) $this->errorCode=self::ERROR_PASSWORD_INVALID; else { $this->username = $this->username; $this->_id = $user->Id; $this->setState('status', $user->status); $this->errorCode=self::ERROR_NONE; } return !$this->errorCode; } public function getId() { return $this->_id; } }

Nah perhatikan untuk klas CWebUser itu standar nya hanya menyimpan id dan nama saja, untuk hal ini nama diubah menjadi email. Coba liat baris program yang $this->setState('status', $user>status); dengan baris program tersebut kita dapat menyimpan banyak variabel yang kita butuhkan tentang user, TAPI INGAT JANGAN MENYIMPAN HAL-HAL YANG TERLALU PENTING SEPERTI PASSWORD KARENA JIKA PENGGUNA mengaktifkan(ingat login saya) maka informasi tersebut tersimpan dalam cookies.. so jangan coba coba ya hehehehe Nah sekarang, kita sudah mengetahui bagaimana status itu disimpan yang tadinya diambil dari Tabelpengguna dalam database.

Untuk membaca variabel tersebut bisa dalam controller, view dan yang jelas dalam \protected\views\layouts\main.php tidak dapat dilakukan. Silahkan ketik seperti dibawah ini :
echo Yii::app()->user->status;

Anda mungkin juga menyukai