| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- <?php
- /** @var array $scriptProperties */
- $modx->error->reset();
- if (!$modx->loadClass('hybridauth', MODX_CORE_PATH . 'components/hybridauth/model/hybridauth/', false, true)) {
- return;
- }
- $HybridAuth = new HybridAuth($modx, $scriptProperties);
- $HybridAuth->initialize($modx->context->key);
- if ($modx->error->hasError()) {
- return $modx->error->message;
- } // For compatibility with old snippet
- elseif (!empty($action)) {
- $tmp = strtolower($action);
- if ($tmp == 'getprofile' || $tmp == 'updateprofile') {
- return $modx->runSnippet('haProfile', $scriptProperties);
- }
- }
- if (empty($loginTpl)) {
- $loginTpl = 'tpl.HybridAuth.login';
- }
- if (empty($logoutTpl)) {
- $logoutTpl = 'tpl.HybridAuth.logout';
- }
- if (empty($providerTpl)) {
- $providerTpl = 'tpl.HybridAuth.provider';
- }
- if (empty($activeProviderTpl)) {
- $activeProviderTpl = 'tpl.HybridAuth.provider.active';
- }
- $url = $HybridAuth->getUrl();
- $error = '';
- if (!empty($_SESSION['HybridAuth']['error'])) {
- $error = $_SESSION['HybridAuth']['error'];
- unset($_SESSION['HybridAuth']['error']);
- }
- if ($modx->user->isAuthenticated($modx->context->key)) {
- $add = array();
- if ($services = $modx->user->getMany('Services')) {
- /** @var haUserService $service */
- foreach ($services as $service) {
- $add = array_merge($add, $service->toArray(strtolower($service->get('provider') . '.')));
- }
- }
- $user = $modx->user->toArray();
- $profile = $modx->user->Profile->toArray();
- unset($profile['id']);
- $arr = array_merge(
- $user,
- $profile,
- $add,
- array(
- 'login_url' => $url . 'login',
- 'logout_url' => $url . 'logout',
- 'providers' => $HybridAuth->getProvidersLinks($providerTpl, $activeProviderTpl),
- 'error' => $error,
- 'gravatar' => 'https://gravatar.com/avatar/' . md5(strtolower($profile['email'])),
- )
- );
- return $HybridAuth->getChunk($logoutTpl, $arr);
- } else {
- $arr = array(
- 'login_url' => $url . 'login',
- 'logout_url' => $url . 'logout',
- 'providers' => $HybridAuth->getProvidersLinks($providerTpl, $activeProviderTpl),
- 'error' => $error,
- );
- return $HybridAuth->getChunk($loginTpl, $arr);
- }
|