/**
  * {@inheritdoc}
  */
 protected function attemptAuthentication(Request $request)
 {
     if (null !== $this->csrfTokenManager) {
         $csrfToken = ParameterBagUtils::getRequestParameterValue($request, $this->options['csrf_parameter']);
         if (false === $this->csrfTokenManager->isTokenValid(new CsrfToken($this->options['csrf_token_id'], $csrfToken))) {
             throw new InvalidCsrfTokenException('Invalid CSRF token.');
         }
     }
     if ($this->options['post_only']) {
         $username = trim(ParameterBagUtils::getParameterBagValue($request->request, $this->options['username_parameter']));
         $password = ParameterBagUtils::getParameterBagValue($request->request, $this->options['password_parameter']);
     } else {
         $username = trim(ParameterBagUtils::getRequestParameterValue($request, $this->options['username_parameter']));
         $password = ParameterBagUtils::getRequestParameterValue($request, $this->options['password_parameter']);
     }
     $request->getSession()->set(Security::LAST_USERNAME, $username);
     return $this->authenticationManager->authenticate(new UsernamePasswordToken($username, $password, $this->providerKey));
 }
 /**
  * Provide a BC wrapper for deep item finding deprecation.
  *
  * @param ParameterBag $bag
  * @param string $param
  * @return mixed
  */
 protected function getParameterFromBag($bag, $param)
 {
     if (!$this->useParameterBagUtils()) {
         return $bag->get($param, null, true);
     }
     return ParameterBagUtils::getParameterBagValue($bag, $param);
 }