Пример #1
0
 /**
  * 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);
     }
 }
Пример #2
0
 /**
  * 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);
 }
Пример #3
0
 case 'OnHandleRequest':
     if ($modx->context->key != 'web' && !$modx->user->id) {
         if ($user = $modx->getAuthenticatedUser($modx->context->key)) {
             $modx->user = $user;
             $modx->getUser($modx->context->key);
         }
     }
     if ($modx->user->isAuthenticated($modx->context->key)) {
         if (!$modx->user->active || $modx->user->Profile->blocked) {
             $modx->runProcessor('security/logout');
             $modx->sendRedirect($modx->makeUrl($modx->getOption('site_start'), '', '', 'full'));
         }
     }
     if (!empty($_REQUEST['hauth_action']) || !empty($_REQUEST['hauth_start']) || !empty($_REQUEST['hauth_done'])) {
         $config = !empty($_SESSION['HybridAuth'][$modx->context->key]) ? $_SESSION['HybridAuth'][$modx->context->key] : array();
         $HybridAuth = new HybridAuth($modx, $config);
         if (!empty($_REQUEST['hauth_action'])) {
             switch ($_REQUEST['hauth_action']) {
                 case 'login':
                     $HybridAuth->Login(@$_REQUEST['provider']);
                     break;
                 case 'logout':
                     $HybridAuth->Logout();
                     break;
             }
         } else {
             $HybridAuth->processAuth();
         }
     }
     break;
 case 'OnWebAuthentication':
Пример #4
0
<?php

/** @var array $scriptProperties */
$modx->error->message = null;
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;
} 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 = '';
Пример #5
0
<?php

/** @var array $scriptProperties */
$modx->error->message = null;
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;
} elseif (!$modx->user->isAuthenticated($modx->context->key)) {
    return $modx->lexicon('ha_err_not_logged_in');
}
if (empty($profileTpl)) {
    $profileTpl = 'tpl.HybridAuth.profile';
}
if (empty($profileFields)) {
    $profileFields = 'username:25,email:50,fullname:50,phone:12,mobilephone:12,dob:10,gender,address,country,city,state,zip,fax,photo,comment,website';
}
if (empty($requiredFields)) {
    $requiredFields = 'username,email,fullname';
}
if (empty($providerTpl)) {
    $providerTpl = 'tpl.HybridAuth.provider';
}
if (empty($activeProviderTpl)) {
    $activeProviderTpl = 'tpl.HybridAuth.provider.active';
}
$data = array();
// Update of profile