class UserIdentity extends CUserIdentity

Embed Size (px)

DESCRIPTION

Selamat siang teman2, kemarin saya mencoba bagaimana menggunakan class UserIdentity extends CUserIdentityDalam 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 :class UserIdentity extends CUserIdentity{ private $_id; public function authenticate() { $username = strtolower($this->username); $user = Tabelpengguna::model()->find('LOWER(email)=?', 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 heheheheNah 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;

Citation preview

Invalid document format