Plz Give Me Suggestion: Auto Login After Register By This Way

after insert this function to my user model:


public function afterValidate() {

    parent::afterValidate();

    //ensure we dont have any other errors

    if(!$this->hasErrors()){

        $this->password = md5($this->password);

        Yii::app()->user->setState('autoLoginPassword', $this->password);

    }

     

}

I modified actionCreate from controller like this:


 public function actionCreate()

    {

        $model=new User;

 

        // Uncomment the following line if AJAX validation is needed

        // $this->performAjaxValidation($model);

 

        if(isset($_POST['User']))

        {

//                    CVarDumper::dump($_POST['User']);

            $model->attributes=$_POST['User'];

            if($model->save()){

                            # auto login

                            if(Yii::app()->user->hasState('autoLoginPassword')){

                                $identity=new UserIdentity($_POST['User']['username'],Yii::app()->user->getState("autoLoginPassword"));

                                $identity->errorCode = UserIdentity::ERROR_NONE;

                                $identity->setId($model->user_id);

                                $identity->username = $model->username;

                                $identity->authenticate();

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

 

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

//                            $this->redirect(array('view','id'=>$model->user_id));

                            }

                        }

        }

 

        $this->render('create',array(

            'model'=>$model,

        ));

    }

is this way safe?

any better solution?

thanks for advice

I would rather do something like following




if ($model->save()){

	# auto login

	$loginForm = new LoginForm;

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

	if ($loginForm->login()) {

		# redirect the user

	}

}