You are here

private function TokenProcessor::fetchSingleToken in Lightweight Directory Access Protocol (LDAP) 8.3

Fetch a single token.

Parameters

\Drupal\user\UserInterface $account: LDAP entry.

string $pre: Preamble.

string $post: Postamble.

string $token: Token key.

Return value

array Tokens.

1 call to TokenProcessor::fetchSingleToken()
TokenProcessor::tokenizeUserAccount in ldap_servers/src/Processor/TokenProcessor.php
Tokenize a user account.

File

ldap_servers/src/Processor/TokenProcessor.php, line 238

Class

TokenProcessor
Helper to manage LDAP tokens and process their content.

Namespace

Drupal\ldap_servers\Processor

Code

private function fetchSingleToken(UserInterface $account, $pre, $post, $token) {

  // Trailing period to allow for empty value.
  list($attribute_type, $attribute_name, $attribute_conversion) = explode('.', $token . '.');
  $value = FALSE;
  $tokens = [];
  switch ($attribute_type) {
    case 'field':
    case 'property':
      $value = $this
        ->fetchRegularFieldToken($account, $attribute_name);
      break;
    case 'password':
      $value = $this
        ->fetchPasswordToken($attribute_name);
      if (empty($value)) {

        // Do not evaluate empty passwords, to avoid overwriting them.
        return [
          NULL,
          NULL,
        ];
      }
      break;
  }
  if ($attribute_conversion == 'to-md5') {
    $value = md5($value);
  }
  elseif ($attribute_conversion == 'to-lowercase') {
    $value = mb_strtolower($value);
  }
  $tokens[$pre . $token . $post] = $value;

  // We are redundantly setting the lowercase value here for consistency with
  // parent function.
  if ($token != mb_strtolower($token)) {
    $tokens[$pre . mb_strtolower($token) . $post] = $value;
  }
  return $tokens;
}