[SOLVED] want to have removeError()

I am modifying the code of User Identification stolen from the blog demo. :)

I understand that the user authentication is done as follows.

(1) component/UserIdentity.php

  It returns several status in $this->errorCode.

(2) models/LoginForm.php

  It judges the situation from the $identity->errorCode and sets the results by using $this->addError() method.

  I added another situation (USER_TO_BE_REGISTERED) by using $this->addError because if I do not, it means no error to the upper function.

  BTW, ERROR_NONE means that the user is in the db and password is OK.

          ERROR_PASSWORD_INVALID means as written.

(3) controllers/SiteController.php

  It checks the validation by using $form->validate(), and I would like to distinguish those three conditions here.

Then, in the SiteController, I wanted to have a method that removes the error from the lower function such as authenticate(). Otherwise, could you please give me a better solution?

In SiteController:

If you want to access the actual ERROR_ code there, you could store the UserIdentify object in LoginForm, something like this

public function authenticate(...) {


    ... 


    $this->userIdentity = $userIdentidy;


}


Then use it in the SiteController:

if ($loginForm->userIdentity->errorCode == …)

If you want to clear the errors in LoginForm, use $loginForm->clearErrors() ;)

Thanks olafure,

Quote

public function authenticate(…) {

    …

    $this->userIdentity = $userIdentidy;

}

Then use it in the SiteController:



if ($loginForm->userIdentity->errorCode == ...)


I think this is better. What I have done is almost the same(?) but I think mine is not as good as yours.



class LoginForm extends CFormModel


{


      public $errorCode;


...


      public function authenticate($attribute,$params)


...


      $this->errorCode = $identity->errorCode;


...


SiteController:



if ($form->errorCode == UserIdentity::USER_TO_BE_REGISTERED) {


Though I haven’t tested clearErrors(), my user identification module is now working. Thanks! :D

Hi olafure,

I have just tested your suggestion of CModel.clearErrors(). I think it almost works fine.

Adding the error code and removing it are OK. One thing that I have noticed that I have to distinguish the status of USER_TO_BE_REGISTERED from the errorCode anyway. So, I decided to use errorCode and thus do not have to remove error codes. Thanks.

I have just made an extension using this technique described here.