SocialiteManager.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <?php
  2. namespace Webkul\SocialLogin;
  3. use Laravel\Socialite\One\TwitterProvider;
  4. use Laravel\Socialite\SocialiteManager as BaseSocialiteManager;
  5. use Laravel\Socialite\Two\FacebookProvider;
  6. use Laravel\Socialite\Two\GithubProvider;
  7. use Laravel\Socialite\Two\GoogleProvider;
  8. use Laravel\Socialite\Two\LinkedInOpenIdProvider;
  9. use League\OAuth1\Client\Server\Twitter as TwitterServer;
  10. class SocialiteManager extends BaseSocialiteManager
  11. {
  12. /**
  13. * Create an instance of the specified driver.
  14. *
  15. * @return \Laravel\Socialite\Two\AbstractProvider
  16. */
  17. protected function createGithubDriver()
  18. {
  19. $clientId = core()->getConfigData('customer.settings.social_login.github_client_id');
  20. $clientSecret = core()->getConfigData('customer.settings.social_login.github_client_secret');
  21. $callbackUrl = core()->getConfigData('customer.settings.social_login.github_callback_url');
  22. if ($clientId || $clientSecret || $callbackUrl) {
  23. $config = [
  24. 'client_id' => $clientId,
  25. 'client_secret' => $clientSecret,
  26. 'redirect' => $callbackUrl,
  27. ];
  28. } else {
  29. $config = $this->config->get('services.github');
  30. }
  31. return $this->buildProvider(
  32. GithubProvider::class, $config
  33. );
  34. }
  35. /**
  36. * Create an instance of the specified driver.
  37. *
  38. * @return \Laravel\Socialite\Two\AbstractProvider
  39. */
  40. protected function createFacebookDriver()
  41. {
  42. $clientId = core()->getConfigData('customer.settings.social_login.facebook_client_id');
  43. $clientSecret = core()->getConfigData('customer.settings.social_login.facebook_client_secret');
  44. $callbackUrl = core()->getConfigData('customer.settings.social_login.facebook_callback_url');
  45. if ($clientId || $clientSecret || $callbackUrl) {
  46. $config = [
  47. 'client_id' => $clientId,
  48. 'client_secret' => $clientSecret,
  49. 'redirect' => $callbackUrl,
  50. ];
  51. } else {
  52. $config = $this->config->get('services.facebook');
  53. }
  54. return $this->buildProvider(
  55. FacebookProvider::class, $config
  56. );
  57. }
  58. /**
  59. * Create an instance of the specified driver.
  60. *
  61. * @return \Laravel\Socialite\Two\AbstractProvider
  62. */
  63. protected function createGoogleDriver()
  64. {
  65. $clientId = core()->getConfigData('customer.settings.social_login.google_client_id');
  66. $clientSecret = core()->getConfigData('customer.settings.social_login.google_client_secret');
  67. $callbackUrl = core()->getConfigData('customer.settings.social_login.google_callback_url');
  68. if ($clientId || $clientSecret || $callbackUrl) {
  69. $config = [
  70. 'client_id' => $clientId,
  71. 'client_secret' => $clientSecret,
  72. 'redirect' => $callbackUrl,
  73. ];
  74. } else {
  75. $config = $this->config->get('services.google');
  76. }
  77. return $this->buildProvider(
  78. GoogleProvider::class, $config
  79. );
  80. }
  81. /**
  82. * Create an instance of the specified driver.
  83. *
  84. * @return \Laravel\Socialite\Two\AbstractProvider
  85. */
  86. protected function createLinkedinOpenidDriver()
  87. {
  88. $clientId = core()->getConfigData('customer.settings.social_login.linkedin_client_id');
  89. $clientSecret = core()->getConfigData('customer.settings.social_login.linkedin_client_secret');
  90. $callbackUrl = core()->getConfigData('customer.settings.social_login.linkedin_callback_url');
  91. if ($clientId || $clientSecret || $callbackUrl) {
  92. $config = [
  93. 'client_id' => $clientId,
  94. 'client_secret' => $clientSecret,
  95. 'redirect' => $callbackUrl,
  96. ];
  97. } else {
  98. $config = $this->config->get('services.linkedin-openid');
  99. }
  100. return $this->buildProvider(
  101. LinkedInOpenIdProvider::class, $config
  102. );
  103. }
  104. /**
  105. * Create an instance of the specified driver.
  106. *
  107. * @return \Laravel\Socialite\One\AbstractProvider|\Laravel\Socialite\Two\AbstractProvider
  108. */
  109. protected function createTwitterDriver()
  110. {
  111. $clientId = core()->getConfigData('customer.settings.social_login.twitter_client_id');
  112. $clientSecret = core()->getConfigData('customer.settings.social_login.twitter_client_secret');
  113. $callbackUrl = core()->getConfigData('customer.settings.social_login.twitter_callback_url');
  114. if ($clientId || $clientSecret || $callbackUrl) {
  115. $config = [
  116. 'client_id' => $clientId,
  117. 'client_secret' => $clientSecret,
  118. 'redirect' => $callbackUrl,
  119. ];
  120. } else {
  121. $config = $this->config->get('services.twitter');
  122. }
  123. if (($config['oauth'] ?? null) === 2) {
  124. return $this->createTwitterOAuth2Driver();
  125. }
  126. return new TwitterProvider(
  127. $this->container->make('request'), new TwitterServer($this->formatConfig($config))
  128. );
  129. }
  130. }