[Solved] Mendesign Ulang Formulir Login

Halooo Yii-ers.

Mau nanya lagi nih :D

Gimana caranya mendesign ulang formulir login, yang mau saya rubah itu:

  1. Data inputannya berdasarkan database yang telah saya buat.

Misal : di database KANTOR ada table KARYAWAN, inputannya untuk login itu NIK dan PASSWORD.

saya sudah mau coba ngutak-ngatik sitecontroler bagian actionLogin. Tapi malah jadi bingung :(

mohon bantuannya ya kk.

ini teh mau ngedesain ulang tampilan formulir loginnya aja?? kalo gitu yang mesti diedit bukannya yang dibagian view ya?? alamatnya di /protected/views/site/login.php. Sesuaikan aja dengan kebutuhan…

terus kalo mau nyesuain dengan database punya kita, kita edit juga tuh modelnya di /protected/models/LoginForm.php… kita mesti punya variabel buat nampung inputannya itu, misal $karyawan dan $password…

CMIIW… sama sama lagi belajar neh… hehehe :lol: :lol: :lol:

iya gan, setelah saya cek ternyata ada di component/useridentity.php

ini kan pengalananya




public function authenticate()

	{

		$users=array(

			// username => password

			'demo'=>'demo',

			'admin'=>'admin',

		);



nah pas ane coba




public function authenticate()

	{

		$users=array(

			// username => password

			'demo'=>'demo',

			'admin'=>'admin',

                        // ini dari input merujuk table

                        'namatable[fieldNIK]'=>'namatable[fieldpassword]'

		);



kok ternyata gak merujuk table ya gan?

malah yang harus dimasukin/ketik itu ‘namatable[fieldNIK]’ dan ‘namatable[fieldpassword]’ sebagai inputan.

supaya merujuk ke table yang diinginkan gimana caranya ya gan?

hoooooh, kalo mau ngerujuk ke tabel yang ada di database kita, buat model yang extends ke CActiveRecord gan… trus di authenticate itu kita rujuk ke ke model yang tadi kita buat… lengkapnya sih ada neh disini dokumentasi yii

:) :)

ini penggalan controller di action tempat pemrosesan form login (asumsi form loginnya dah punya attribute nik sama password…




        $loginForm = new LoginForm;

        if (isset($_POST['LoginForm'])) {

            $loginForm->attributes = $_POST['LoginForm'];

            if ($loginForm->validate()) {

		$nik = $loginForm->nik;

		$password = $loginForm->password

		$identity = new UserIdentity($nik, $password);

                Yii::app()->user->login($identity);

                //redirect

            }

        }



terus UserIdentitynya, asumsi ada model activerecord bernama Karyawan yang ngemap ke table Karyawan…




class UserIdentity extends CUserIdentity {

	private $nik;

	

	public function __construct($nik,$password) {

		$this->nik = $nik;

		$this->password = $password;

	}

	

    public function authenticate() {

        $karyawan = Karyawan::model()->find('nik=', array($this->nik));

        if( $karyawan === null)

            $this->errorCode=self::ERROR_USERNAME_INVALID;

        else if ($karyawan->password != $this->password) //atau pake SHA

            $this->errorCode=self::ERROR_PASSWORD_INVALID;

        else

        {

            $this->_id = $karyawan->id;

            $this->username = $karyawan->username;

            $this->errorCode = self::ERROR_NONE;

        }

        return $this->errorCode == self::ERROR_NONE;

    }

}



mantap bener… itulah maksud ane gan… hehe :D :D :D

agan petra, saya sudah coba code dari agan.

ternyata pas ke halaman login, layar bersih gak ada tampilan apa2. :D

gak ada pesan error juga. Knp ya?.

belom berhasil gan :(

ane masukin nik dan password trus ada pesan error kyk gini

sk_admin itu nama table. Modelnya Skadmin

Bingung ane gan, apa belum nge-map ya?. :(

klo redirect dirubah, ternyata pesan error berubah

klo saya pake redirect yang ini


$this->render('login',array('model'=>$model));  

Keluar pesan errornya kyk gini gan

sk_admin itu nama table , modelnya Skadmin

klo saya pake redirect yang ini


$this->redirect(Yii::app()->user->login($identity));

Keluar pesan kyk gini gan

Tolong ane gan, :(

yaaaa… kode yg saya kasih khan bukan buat di copy paste…

~______~

lagian juga saya gak tau kode aslinya (mbak?) putrilangit,

jadinya ya belum tentu cocok :P

Hihihi…maklum mas aq blm bisa baca script di yii.

jadi masih meraba2. punya referensi tutorial gak mas biar aq selesai masalah login ini :D

sepertinya itu authenticate() belum dipanggil

ane baca lagi manualnya:

public void login(IUserIdentity $identity, integer $duration=0)

$identity IUserIdentity the user identity (which should already be authenticated)

klo tanpa validasi spt ini




        if (isset($_POST['login'])) {

            $identity = new EUserIdentity($_POST['nik'], $_POST['password']); // EUserIdentity extends CUserIdentity

            if ($identity->authenticate()) {

                Yii::app()->user->login($identity);

                $this->redirect(Yii::app()->user->getReturnUrl(), true);

            } else {

                Yii::app()->user->setFlash('login-error', 'NIK atau password tidak cocok.');

            }

        }



agan2 mau nanya donk. Ini program aq salahnya dimana ya?.

Setiap masukin nik dan password salah. Padahal inputnya udah bener.

Ini penggalan UserIdentity




class UserIdentity extends CUserIdentity

{

public function authenticate()

		$public $nik;

		{

		$nik=$this->nik;

        $record=Skadmin::model()->findByAttributes(array('nik'=>$nik));

        if($record===null)

            $this->errorCode=self::ERROR_USERNAME_INVALID;

        else if($record->password!==($this->password))

            $this->errorCode=self::ERROR_PASSWORD_INVALID;

        else

        {

            $this->_id=$record->id;

            //$this->setState('title', $record->title);

            $this->errorCode=self::ERROR_NONE;

        }

        return !$this->errorCode;

		}

 

		public function getId()

		{

        return $this->_id;

		}

	 }



ini class loginform




public function rules()

	{

		return array(

		

			array('nik, password', 'required'),

			array('rememberMe', 'boolean'),

			array('password', 'authenticate'),

		);

	}


public function authenticate($attribute,$params)

	{

		if(!$this->hasErrors())

		{

			$this->_identity=new UserIdentity($this->nik,$this->password);

			if(!$this->_identity->authenticate())

				$this->addError('password','Incorrect nik or password.');

		}

	}


public function login()

	{

		if($this->_identity===null)

		{

			$this->_identity=new UserIdentity($this->nik,$this->password);

			$this->_identity->authenticate();

		}

		if($this->_identity->errorCode===UserIdentity::ERROR_NONE)

		{

			$duration=$this->rememberMe ? 3600*24*30 : 0; // 30 days

			Yii::app()->user->login($this->_identity,$duration);

			return true;

		}

		else

			return false;

	}



Kira2 apa yang salah ya gan?. kok tiap saya input salah melulu. Padahal udah bener inputnya.

Mohon bimbinganya gan, maklum saya masih newbie , belum bisa baca script yii. :D

saya sudah coba code dari agan.

itu disempennya dimana ya gan?.

saya simpen di


public function authenticate($attribute,$params)

. Tapi setiap eksekusi malah jadi nge-blank putih layarnya. putih bersih kyk Aq. :D Kenapa ya gan?.

ah iya,

itu kode yg saya post copy di dari program bikinan saya. di situ authnya ditempelin ke login form

my bad :)

itu ane naruhnya d controller langsung ndak pake form2an

makasih ya kk, mas, om, pak, dan para2 master Yii atas bantuannya

Alhamdulilah solved.

Ma’af lupa di solved. Baru keingetan :D

special thx to

yuckimoera

Petra

Ibiz4

muaach…muachh… :wub:

maaf agan2 master yii…

sy minta tlong di post ulang secara lengkap scrip login yang di atas??

maklum masih nubi ::)

thengs ya…

gini mas, saya mohon ma’af sebelumnya, bukannya saya tidak mau membagi scriptnya, tapi agar kita bisa sama2 belajar. coba aja mas bikin script nya dulu.

klo ada yang gak bisa atau error di tanya di sini. :D

NB: Soalnya saya juga try and error , tapi akhirnya berhasil. Walapaupun saya belum begitu faham struktur nya kyk gimana :P. Maklum mas saya masih newbie juga :P