class FacebookAuthController in Social Auth Facebook 8
Same name and namespace in other branches
- 8.2 src/Controller/FacebookAuthController.php \Drupal\social_auth_facebook\Controller\FacebookAuthController
- 3.x src/Controller/FacebookAuthController.php \Drupal\social_auth_facebook\Controller\FacebookAuthController
Returns responses for Simple FB Connect module routes.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\social_auth_facebook\Controller\FacebookAuthController
Expanded class hierarchy of FacebookAuthController
File
- src/
Controller/ FacebookAuthController.php, line 17
Namespace
Drupal\social_auth_facebook\ControllerView source
class FacebookAuthController extends ControllerBase {
/**
* The network plugin manager.
*
* @var \Drupal\social_api\Plugin\NetworkManager
*/
private $networkManager;
/**
* The user manager.
*
* @var \Drupal\social_auth\SocialAuthUserManager
*/
private $userManager;
/**
* The Facebook authentication manager.
*
* @var \Drupal\social_auth_facebook\FacebookAuthManager
*/
private $facebookManager;
/**
* Used to access GET parameters.
*
* @var \Symfony\Component\HttpFoundation\RequestStack
*/
private $request;
/**
* The Facebook Persistent Data Handler.
*
* @var \Drupal\social_auth_facebook\FacebookAuthPersistentDataHandler
*/
private $persistentDataHandler;
/**
* FacebookAuthController constructor.
*
* @param \Drupal\social_api\Plugin\NetworkManager $network_manager
* Used to get an instance of social_auth_facebook network plugin.
* @param \Drupal\social_auth\SocialAuthUserManager $user_manager
* Manages user login/registration.
* @param \Drupal\social_auth_facebook\FacebookAuthManager $facebook_manager
* Used to manage authentication methods.
* @param \Symfony\Component\HttpFoundation\RequestStack $request
* Used to access GET parameters.
* @param \Drupal\social_auth_facebook\FacebookAuthPersistentDataHandler $persistent_data_handler
* FacebookAuthPersistentDataHandler object.
*/
public function __construct(NetworkManager $network_manager, SocialAuthUserManager $user_manager, FacebookAuthManager $facebook_manager, RequestStack $request, FacebookAuthPersistentDataHandler $persistent_data_handler) {
$this->networkManager = $network_manager;
$this->userManager = $user_manager;
$this->facebookManager = $facebook_manager;
$this->request = $request;
$this->persistentDataHandler = $persistent_data_handler;
// Sets the plugin id.
$this->userManager
->setPluginId('social_auth_facebook');
// Sets the session keys to nullify if user could not logged in.
$this->userManager
->setSessionKeysToNullify([
$this->persistentDataHandler
->getSessionPrefix() . 'access_token',
]);
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('plugin.network.manager'), $container
->get('social_auth.user_manager'), $container
->get('social_auth_facebook.manager'), $container
->get('request_stack'), $container
->get('social_auth_facebook.persistent_data_handler'));
}
/**
* Response for path 'user/simple-fb-connect'.
*
* Redirects the user to FB for authentication.
*/
public function redirectToFb() {
/* @var \Facebook\Facebook|false $facebook */
$facebook = $this->networkManager
->createInstance('social_auth_facebook')
->getSdk();
// If facebook client could not be obtained.
if (!$facebook) {
drupal_set_message($this
->t('Social Auth Facebook not configured properly. Contact site administrator.'), 'error');
return $this
->redirect('user.login');
}
// Facebook service was returned, inject it to $fbManager.
$this->facebookManager
->setClient($facebook);
// Generates the URL where the user will be redirected for FB login.
// If the user did not have email permission granted on previous attempt,
// we use the re-request URL requesting only the email address.
$fb_login_url = $this->facebookManager
->getFbLoginUrl();
if ($this->persistentDataHandler
->get('reprompt')) {
$fb_login_url = $this->facebookManager
->getFbReRequestUrl();
}
return new TrustedRedirectResponse($fb_login_url);
}
/**
* Response for path 'user/login/facebook/callback'.
*
* Facebook returns the user here after user has authenticated in FB.
*/
public function returnFromFb() {
// Checks if user cancel login via Facebook.
$error = $this->request
->getCurrentRequest()
->get('error');
if ($error == 'access_denied') {
drupal_set_message($this
->t('You could not be authenticated.'), 'error');
return $this
->redirect('user.login');
}
/* @var \Facebook\Facebook|false $facebook */
$facebook = $this->networkManager
->createInstance('social_auth_facebook')
->getSdk();
// If facebook client could not be obtained.
if (!$facebook) {
drupal_set_message($this
->t('Social Auth Facebook not configured properly. Contact site administrator.'), 'error');
return $this
->redirect('user.login');
}
$this->facebookManager
->setClient($facebook)
->authenticate();
// Checks that user authorized our app to access user's email address.
if (!$this->facebookManager
->checkPermission('email')) {
drupal_set_message($this
->t('Facebook login failed. This site requires permission to get your email address from Facebook. Please try again.'), 'error');
$this->persistentDataHandler
->set('reprompt', TRUE);
return $this
->redirect('user.login');
}
// Gets user's FB profile from Facebook API.
if (!($fb_profile = $this->facebookManager
->getUserInfo())) {
drupal_set_message($this
->t('Facebook login failed, could not load Facebook profile. Contact site administrator.'), 'error');
return $this
->redirect('user.login');
}
// Gets user's email from the FB profile.
if (!($email = $this->facebookManager
->getEmail($fb_profile))) {
drupal_set_message($this
->t('Facebook login failed. This site requires permission to get your email address.'), 'error');
return $this
->redirect('user.login');
}
// Saves access token to session so that event subscribers can call FB API.
$this->persistentDataHandler
->set('access_token', $this->facebookManager
->getAccessToken());
// If user information could be retrieved.
return $this->userManager
->authenticateUser($email, $fb_profile
->getField('name'), $fb_profile
->getField('id'), $this->facebookManager
->getFbProfilePicUrl());
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity manager. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity manager service. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
ControllerBase:: |
protected | function | Returns the state storage service. | |
FacebookAuthController:: |
private | property | The Facebook authentication manager. | |
FacebookAuthController:: |
private | property | The network plugin manager. | |
FacebookAuthController:: |
private | property | The Facebook Persistent Data Handler. | |
FacebookAuthController:: |
private | property | Used to access GET parameters. | |
FacebookAuthController:: |
private | property | The user manager. | |
FacebookAuthController:: |
public static | function |
Instantiates a new instance of this class. Overrides ControllerBase:: |
|
FacebookAuthController:: |
public | function | Response for path 'user/simple-fb-connect'. | |
FacebookAuthController:: |
public | function | Response for path 'user/login/facebook/callback'. | |
FacebookAuthController:: |
public | function | FacebookAuthController constructor. | |
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. |