original_string: public function authenticate(string $password): bool
      {
          $hash = $this->get('hashed_password');
  
          $isHashed = null !== $hash;
          if (!$isHashed) {
              // If there is no hashed password, fake verify with default hash.
              $hash = Grav::instance()['config']->get('system.security.default_hash');
          }
  
          // Always execute verify() to protect us from timing attacks, but make the test to fail if hashed password wasn't set.
          $result = Authentication::verify($password, $hash) && $isHashed;
  
          $plaintext_password = $this->get('password');
          if (null !== $plaintext_password) {
              // Plain-text password is still stored, check if it matches.
              if ($password !== $plaintext_password) {
                  return false;
              }
  
              // Force hash update to get rid of plaintext password.
              $result = 2;
          }
  
          if ($result === 2) {
              // Password needs to be updated, save the user.
              $this->set('password', $password);
              $this->undef('hashed_password');
              $this->save();
          }
  
          return (bool)$result;
      }
code: public function authenticate(string $password): bool
      {
          $hash = $this->get('hashed_password');
  
          $isHashed = null !== $hash;
          if (!$isHashed) {
              // If there is no hashed password, fake verify with default hash.
              $hash = Grav::instance()['config']->get('system.security.default_hash');
          }
  
          // Always execute verify() to protect us from timing attacks, but make the test to fail if hashed password wasn't set.
          $result = Authentication::verify($password, $hash) && $isHashed;
  
          $plaintext_password = $this->get('password');
          if (null !== $plaintext_password) {
              // Plain-text password is still stored, check if it matches.
              if ($password !== $plaintext_password) {
                  return false;
              }
  
              // Force hash update to get rid of plaintext password.
              $result = 2;
          }
  
          if ($result === 2) {
              // Password needs to be updated, save the user.
              $this->set('password', $password);
              $this->undef('hashed_password');
              $this->save();
          }
  
          return (bool)$result;
      }
code_tokens: public function authenticate ( string $ password ) : bool { $ hash = $ this -> get ( 'hashed_password' ) ; $ isHashed = null !== $ hash ; if ( ! $ isHashed ) { // If there is no hashed password, fake verify with default hash. $ hash = Grav :: instance ( ) [ 'config' ] -> get ( 'system.security.default_hash' ) ; } // Always execute verify() to protect us from timing attacks, but make the test to fail if hashed password wasn't set. $ result = Authentication :: verify ( $ password , $ hash ) && $ isHashed ; $ plaintext_password = $ this -> get ( 'password' ) ; if ( null !== $ plaintext_password ) { // Plain-text password is still stored, check if it matches. if ( $ password !== $ plaintext_password ) { return false ; } // Force hash update to get rid of plaintext password. $ result = 2 ; } if ( $ result === 2 ) { // Password needs to be updated, save the user. $ this -> set ( 'password' , $ password ) ; $ this -> undef ( 'hashed_password' ) ; $ this -> save ( ) ; } return ( bool ) $ result ; }
docstring: Authenticate user.
  
  If user password needs to be updated, new information will be saved.
  
  @param string $password Plaintext password.
  @return bool
docstring_tokens: Authenticate user .