class LinkedInLinkController in Open Social 8
Same name and namespace in other branches
- 8.9 modules/custom/social_auth_linkedin/src/Controller/LinkedInLinkController.php \Drupal\social_auth_linkedin\Controller\LinkedInLinkController
- 8.2 modules/custom/social_auth_linkedin/src/Controller/LinkedInLinkController.php \Drupal\social_auth_linkedin\Controller\LinkedInLinkController
- 8.3 modules/custom/social_auth_linkedin/src/Controller/LinkedInLinkController.php \Drupal\social_auth_linkedin\Controller\LinkedInLinkController
- 8.4 modules/custom/social_auth_linkedin/src/Controller/LinkedInLinkController.php \Drupal\social_auth_linkedin\Controller\LinkedInLinkController
- 8.5 modules/custom/social_auth_linkedin/src/Controller/LinkedInLinkController.php \Drupal\social_auth_linkedin\Controller\LinkedInLinkController
- 8.6 modules/custom/social_auth_linkedin/src/Controller/LinkedInLinkController.php \Drupal\social_auth_linkedin\Controller\LinkedInLinkController
- 8.7 modules/custom/social_auth_linkedin/src/Controller/LinkedInLinkController.php \Drupal\social_auth_linkedin\Controller\LinkedInLinkController
- 8.8 modules/custom/social_auth_linkedin/src/Controller/LinkedInLinkController.php \Drupal\social_auth_linkedin\Controller\LinkedInLinkController
Class LinkedInLinkController.
@package Drupal\social_auth_linkedin\Controller
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\social_auth_linkedin\Controller\LinkedInLinkController
Expanded class hierarchy of LinkedInLinkController
File
- modules/
custom/ social_auth_linkedin/ src/ Controller/ LinkedInLinkController.php, line 18
Namespace
Drupal\social_auth_linkedin\ControllerView source
class LinkedInLinkController extends ControllerBase {
protected $networkManager;
protected $authManager;
/**
* LinkedInLinkController constructor.
*/
public function __construct(NetworkManager $network_manager, LinkedInAuthManager $auth_manager) {
$this->networkManager = $network_manager;
$this->authManager = $auth_manager;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('plugin.network.manager'), $container
->get('social_auth_linkedin.auth_manager'));
}
/**
* Response for path 'social-api/link/linkedin'.
*
* Redirects the user to LinkedIn for joining accounts.
*/
public function linkAccount() {
$sdk = $this
->getSdk();
if ($sdk instanceof RedirectResponse) {
return $sdk;
}
$this->authManager
->setSdk($sdk);
$url = $this->authManager
->getAuthenticationUrl('link');
return new TrustedRedirectResponse($url);
}
/**
* Makes joining between account on this site and account on social network.
*
* @return \Symfony\Component\HttpFoundation\RedirectResponse
* A RedirectResponse pointing to the user edit form.
*/
public function linkAccountCallback() {
$sdk = $this
->getSdk();
if ($sdk instanceof RedirectResponse) {
return $sdk;
}
$this->authManager
->setSdk($sdk);
// Get the OAuth token from LinkedIn.
if (!$this->authManager
->getAccessToken('link')) {
drupal_set_message($this
->t('@network login failed. Token is not valid.', [
'@network' => $this
->t('LinkedIn'),
]), 'error');
return $this
->redirect('entity.user.edit_form', [
'user' => $this
->currentUser()
->id(),
]);
}
// Get user's LinkedIn profile from LinkedIn API.
if (!($profile = $this->authManager
->getProfile()) || !isset($profile['id'])) {
drupal_set_message($this
->t('@network login failed, could not load @network profile. Contact site administrator.', [
'@network' => $this
->t('LinkedIn'),
]), 'error');
return $this
->redirect('entity.user.edit_form', [
'user' => $this
->currentUser()
->id(),
]);
}
// Check whether any another user account already connected.
$account = $this
->entityTypeManager()
->getStorage('user')
->loadByProperties([
'linkedin_id' => $profile['id'],
]);
$account = current($account);
// Check whether another account was connected to this LinkedIn account.
if ($account && (int) $account
->id() !== (int) $this
->currentUser()
->id()) {
drupal_set_message($this
->t('Your @network account has already connected to another account on this site.', [
'@network' => $this
->t('LinkedIn'),
]), 'warning');
return $this
->redirect('entity.user.edit_form', [
'user' => $this
->currentUser()
->id(),
]);
}
$account = User::load($this
->currentUser()
->id());
$account
->get('linkedin_id')
->setValue($profile['id']);
$account
->save();
drupal_set_message($this
->t('You are now able to log in with @network', [
'@network' => $this
->t('LinkedIn'),
]));
return $this
->redirect('entity.user.edit_form', [
'user' => $account
->id(),
]);
}
/**
* Returns the SDK instance or RedirectResponse when error occurred.
*
* @return mixed|\Symfony\Component\HttpFoundation\RedirectResponse
* Can return an SDK instance or a RedirectResponse to the user edit form.
*/
public function getSdk() {
$network_manager = $this->networkManager
->createInstance('social_auth_linkedin');
if (!$network_manager
->isActive()) {
drupal_set_message($this
->t('@network is disallowed. Contact site administrator.', [
'@network' => $this
->t('LinkedIn'),
]), 'error');
return $this
->redirect('entity.user.edit_form', [
'user' => $this
->currentUser()
->id(),
]);
}
if (!($sdk = $network_manager
->getSdk())) {
drupal_set_message($this
->t('@network Auth not configured properly. Contact site administrator.', [
'@network' => $this
->t('LinkedIn'),
]), 'error');
return $this
->redirect('entity.user.edit_form', [
'user' => $this
->currentUser()
->id(),
]);
}
return $sdk;
}
}
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. | |
LinkedInLinkController:: |
protected | property | ||
LinkedInLinkController:: |
protected | property | ||
LinkedInLinkController:: |
public static | function |
Instantiates a new instance of this class. Overrides ControllerBase:: |
|
LinkedInLinkController:: |
public | function | Returns the SDK instance or RedirectResponse when error occurred. | |
LinkedInLinkController:: |
public | function | Response for path 'social-api/link/linkedin'. | |
LinkedInLinkController:: |
public | function | Makes joining between account on this site and account on social network. | |
LinkedInLinkController:: |
public | function | LinkedInLinkController 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. |