/** * {@inheritDoc} */ public function connect(UserInterface $user, UserResponseInterface $response) { $property = $this->getProperty($response); $username = $response->getUsername(); //on connect - get the access token and the user ID $service = $response->getResourceOwner()->getName(); if ($service == "google") { $service = "gplus"; } $setter = 'set' . ucfirst($service); $setter_id = $setter . 'Uid'; $setter_token = $setter . 'Name'; //we "disconnect" previously connected users if (null !== ($previousUser = $this->userManager->findUserBy(array($property => $username)))) { $previousUser->{$setter_id}(null); $previousUser->{$setter_token}(null); $this->userManager->updateUser($previousUser); } //we connect current user $user->{$setter_id}($username); $user->{$setter_token}($response->getAccessToken()); //save customfield $user->setProfilePicture($response->getProfilePicture()); //TODO: Save locale, $user->setLocale($response->getLocale()); $this->userManager->updateUser($user); }