/** * {@inheritDoc} */ public function authenticate(TokenInterface $token) { if (!$this->supports($token)) { return null; } $user = $token->getUser(); if (!$user instanceof UserInterface && null !== $this->dispatcher) { $event = new GetUserForTokenEvent($token); $event->setUserProvider($this->userProvider); $this->dispatcher->dispatch(OAuthEvents::USER, $event); $user = $event->getToken()->getUser(); } if (!$user instanceof UserInterface) { throw new BadCredentialsException('No user found for given credentials.'); } $this->userChecker->checkPostAuth($user); $authenticatedToken = new OAuthToken($this->providerKey, $user->getRoles()); $authenticatedToken->setAccessToken($token->getAccessToken()); $authenticatedToken->setService($token->getService()); $authenticatedToken->setUid($token->getUid()); $authenticatedToken->setAuthenticated(true); $authenticatedToken->setUser($user); return $authenticatedToken; }