/** * Returns login form * * @return string */ public function defaultAction() { if ($this->modx->resource->id && $this->modx->resource->id != $this->config['page_id']) { // Save page_id for current context /* @var modContextSetting $setting */ $key = array('key' => 'office_auth_page_id', 'context_key' => $this->modx->context->key); if (!($setting = $this->modx->getObject('modContextSetting', $key))) { $setting = $this->modx->newObject('modContextSetting'); } // It will be updated on every snippet call $setting->fromArray($key, '', true, true); $setting->set('value', $this->modx->resource->id); $setting->set('namespace', 'office'); $setting->set('area', 'office_auth'); $setting->save(); $this->config['page_id'] = $this->modx->resource->id; } $config = $this->office->makePlaceholders($this->office->config); if ($css = trim($this->modx->getOption('office_auth_frontend_css'))) { $this->modx->regClientCSS(str_replace($config['pl'], $config['vl'], $css)); } if ($js = trim($this->modx->getOption('office_auth_frontend_js', null, '[[+jsUrl]]auth/default.js'))) { $this->modx->regClientScript(str_replace($config['pl'], $config['vl'], $js)); } $pls = array(); if ($this->config['HybridAuth'] && file_exists(MODX_CORE_PATH . 'components/hybridauth/')) { if ($this->modx->loadClass('hybridauth', MODX_CORE_PATH . 'components/hybridauth/model/hybridauth/', false, true)) { $HybridAuth = new HybridAuth($this->modx, $this->config); $HybridAuth->initialize($this->modx->context->key); $pls['providers'] = $HybridAuth->getProvidersLinks($this->config['providerTpl'], $this->config['activeProviderTpl']); } } if (!$this->modx->user->isAuthenticated($this->modx->context->key)) { // Redirect after authorization if (!empty($_GET['hauth_return']) && !$this->modx->user->isAuthenticated($this->modx->context->key)) { $url = parse_url($_GET['hauth_return']); if (!empty($url['path'])) { $_SESSION['Office']['ReturnTo'][$this->modx->context->key] = $url['path']; } } // Login errors if (!empty($_SESSION['Office']['Auth']['error'])) { $pls['error'] = $_SESSION['Office']['Auth']['error']; } elseif (!empty($_SESSION['HA']['error'])) { $pls['error'] = $_SESSION['HA']['error']; } elseif (!empty($_SESSION['Office']['Auth']['error']) && !empty($_SESSION['HA']['error'])) { $pls['error'] = $_SESSION['Office']['Auth']['error'] . '<br/>' . $_SESSION['HA']['error']; } unset($_SESSION['Office']['Auth']['error'], $_SESSION['HA']['error']); return $this->modx->getChunk($this->config['tplLogin'], $pls); } else { $user = $this->modx->user->toArray(); $profile = $this->modx->user->Profile->toArray(); $pls = array_merge($pls, $profile, $user); $pls['gravatar'] = $this->config['gravatarUrl'] . md5(strtolower($profile['email'])); return $this->modx->getChunk($this->config['tplLogout'], $pls); } }
/** * Returns profile form * * @return string */ public function defaultAction() { if ($this->modx->resource->id && $this->modx->resource->id != $this->config['page_id']) { // Save page_id for current context /* @var modContextSetting $setting */ $key = array('key' => 'office_profile_page_id', 'context_key' => $this->modx->context->key); if (!($setting = $this->modx->getObject('modContextSetting', $key))) { $setting = $this->modx->newObject('modContextSetting'); } // It will be updated on every snippet call $setting->fromArray($key, '', true, true); $setting->set('value', $this->modx->resource->id); $setting->set('namespace', 'office'); $setting->set('area', 'office_profile'); $setting->save(); $this->config['page_id'] = $this->modx->resource->id; } if (!$this->modx->user->isAuthenticated($this->modx->context->key)) { return $this->modx->user->isAuthenticated('mgr') ? $this->modx->lexicon('office_err_mgr_auth') : ''; } $config = $this->office->makePlaceholders($this->office->config); if ($css = trim($this->modx->getOption('office_profile_frontend_css', null, '[[+cssUrl]]profile/default.css'))) { $this->modx->regClientCSS(str_replace($config['pl'], $config['vl'], $css)); } if ($js = trim($this->modx->getOption('office_profile_frontend_js', null, '[[+jsUrl]]profile/default.js'))) { $this->modx->regClientScript(str_replace($config['pl'], $config['vl'], $js)); } $pls = array(); if ($this->config['HybridAuth'] && file_exists(MODX_CORE_PATH . 'components/hybridauth/')) { if ($this->modx->loadClass('hybridauth', MODX_CORE_PATH . 'components/hybridauth/model/hybridauth/', false, true)) { $HybridAuth = new HybridAuth($this->modx, $this->config); $HybridAuth->initialize($this->modx->context->key); $pls['providers'] = $HybridAuth->getProvidersLinks($this->config['providerTpl'], $this->config['activeProviderTpl']); } } if ($this->modx->resource->id != $this->config['page_id']) { /* @var modContextSetting $setting */ $key = array('key' => 'office_profile_page_id', 'context_key' => $this->modx->context->key); if (!($setting = $this->modx->getObject('modContextSetting', $key))) { $setting = $this->modx->newObject('modContextSetting'); $setting->fromArray($key, '', true, true); } $setting->set('value', $this->modx->resource->id); $setting->save(); $this->config['page_id'] = $this->modx->resource->id; } $user = $this->modx->user->toArray(); $profile = $this->modx->user->Profile->toArray(); $pls = array_merge($pls, $profile, $user); if (!empty($_GET['off_req'])) { $required = explode('-', $_GET['off_req']); foreach ($required as $v) { $pls['error_' . $v] = $this->modx->lexicon('office_profile_err_field_' . $v); } } $pls['gravatar'] = $this->config['gravatarUrl'] . md5(strtolower($profile['email'])); return $this->office->getChunk($this->config['tplProfile'], $pls); }
$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['HA']['error'])) { $error = $_SESSION['HA']['error']; unset($_SESSION['HA']['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 $modx->getChunk($logoutTpl, $arr); } else { $arr = array('login_url' => $url . 'login', 'logout_url' => $url . 'logout', 'providers' => $HybridAuth->getProvidersLinks($providerTpl, $activeProviderTpl), 'error' => $error); return $modx->getChunk($loginTpl, $arr); }