コード例 #1
0
ファイル: UserIdentity.php プロジェクト: vman747/virex
 public function authenticate()
 {
     // check external
     $external = true;
     $user = ExternalUser::model()->findByAttributes(array('name_usr' => $this->username));
     if ($user === NULL) {
         // check internal
         $user = InternalUser::model()->findByAttributes(array('email_uin' => $this->username));
         if ($user === NULL) {
             // no user found
             $this->errorCode = self::ERROR_USERNAME_INVALID;
         }
         $external = false;
     }
     if ($user) {
         if ($external) {
             if ($user->password_usr == ExternalUser::passwordHash($this->password)) {
                 // password ok
                 if ($user->status_usr == ExternalUser::ENABLED_ENABLED) {
                     // account enabled
                     $this->errorCode = self::ERROR_NONE;
                     $this->setState('type', 'External');
                     $this->setState('userId', $user->id_usr);
                     $this->setState('name', $user->name_usr);
                     $this->setState('email', $user->email_usr);
                     $this->setState('limitation_date', $user->limitation_date_usr);
                     $this->setState('rights_daily', $user->rights_daily_usr);
                     $this->setState('rights_monthly', $user->rights_monthly_usr);
                     $this->setState('rights_clean', $user->rights_clean_usr);
                     $user->last_login_date_usr = date('Y-m-d H:i:s');
                     $user->ip_usr = $_SERVER['REMOTE_ADDR'];
                     $user->save(false);
                 } else {
                     $this->errorCode = 114 + $user->status_usr;
                     if ($user->status_usr == 0) {
                         $_POST['show_resend_activation'] = true;
                     }
                 }
             } else {
                 $this->errorCode = self::ERROR_PASSWORD_INVALID;
             }
         } else {
             if ($user->password_uin == InternalUser::passwordHash($this->password)) {
                 // password ok
                 if ($user->enabled_uin == InternalUser::ENABLED_ENABLED) {
                     // account enabled
                     $this->errorCode = self::ERROR_NONE;
                     $this->setState('type', 'Internal');
                     $this->setState('userId', $user->id_uin);
                     $this->setState('name', $user->fname_uin . ' ' . $user->lname_uin);
                     $this->setState('email', $user->email_uin);
                     $user->last_login_date_uin = date('Y-m-d H:i:s');
                     $user->save(false);
                 } else {
                     $this->errorCode = self::ERROR_ENABLED_DISABLED;
                 }
             } else {
                 $this->errorCode = self::ERROR_PASSWORD_INVALID;
             }
         }
     }
     return !$this->errorCode;
 }