snippet.hybridauth.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. /** @var array $scriptProperties */
  3. $modx->error->reset();
  4. if (!$modx->loadClass('hybridauth', MODX_CORE_PATH . 'components/hybridauth/model/hybridauth/', false, true)) {
  5. return;
  6. }
  7. $HybridAuth = new HybridAuth($modx, $scriptProperties);
  8. $HybridAuth->initialize($modx->context->key);
  9. if ($modx->error->hasError()) {
  10. return $modx->error->message;
  11. } // For compatibility with old snippet
  12. elseif (!empty($action)) {
  13. $tmp = strtolower($action);
  14. if ($tmp == 'getprofile' || $tmp == 'updateprofile') {
  15. return $modx->runSnippet('haProfile', $scriptProperties);
  16. }
  17. }
  18. if (empty($loginTpl)) {
  19. $loginTpl = 'tpl.HybridAuth.login';
  20. }
  21. if (empty($logoutTpl)) {
  22. $logoutTpl = 'tpl.HybridAuth.logout';
  23. }
  24. if (empty($providerTpl)) {
  25. $providerTpl = 'tpl.HybridAuth.provider';
  26. }
  27. if (empty($activeProviderTpl)) {
  28. $activeProviderTpl = 'tpl.HybridAuth.provider.active';
  29. }
  30. $url = $HybridAuth->getUrl();
  31. $error = '';
  32. if (!empty($_SESSION['HybridAuth']['error'])) {
  33. $error = $_SESSION['HybridAuth']['error'];
  34. unset($_SESSION['HybridAuth']['error']);
  35. }
  36. if ($modx->user->isAuthenticated($modx->context->key)) {
  37. $add = array();
  38. if ($services = $modx->user->getMany('Services')) {
  39. /** @var haUserService $service */
  40. foreach ($services as $service) {
  41. $add = array_merge($add, $service->toArray(strtolower($service->get('provider') . '.')));
  42. }
  43. }
  44. $user = $modx->user->toArray();
  45. $profile = $modx->user->Profile->toArray();
  46. unset($profile['id']);
  47. $arr = array_merge(
  48. $user,
  49. $profile,
  50. $add,
  51. array(
  52. 'login_url' => $url . 'login',
  53. 'logout_url' => $url . 'logout',
  54. 'providers' => $HybridAuth->getProvidersLinks($providerTpl, $activeProviderTpl),
  55. 'error' => $error,
  56. 'gravatar' => 'https://gravatar.com/avatar/' . md5(strtolower($profile['email'])),
  57. )
  58. );
  59. return $HybridAuth->getChunk($logoutTpl, $arr);
  60. } else {
  61. $arr = array(
  62. 'login_url' => $url . 'login',
  63. 'logout_url' => $url . 'logout',
  64. 'providers' => $HybridAuth->getProvidersLinks($providerTpl, $activeProviderTpl),
  65. 'error' => $error,
  66. );
  67. return $HybridAuth->getChunk($loginTpl, $arr);
  68. }