Files
EasySoft-ZenTaoPMS/module/admin/model.php
2021-03-08 11:05:27 +08:00

258 lines
7.1 KiB
PHP

<?php
/**
* The model file of admin module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package admin
* @version $Id: model.php 5148 2013-07-16 01:31:08Z chencongzhi520@gmail.com $
* @link http://www.zentao.net
*/
?>
<?php
class adminModel extends model
{
/**
* The api root.
*
* @var string
* @access public
*/
public $apiRoot;
/**
* Post data form API.
*
* @param string $url
* @param string $formvars
* @access public
* @return void
*/
public function postAPI($url, $formvars = '')
{
return common::http($url, $formvars);
}
/**
* Get status of zentaopms.
*
* @access public
* @return void
*/
public function getStatOfPMS()
{
$sql = "SHOW TABLE STATUS";
$tables = $this->dbh->query($sql)->fetchALL();
}
/**
* Get state of company.
*
* @param int $companyID
* @access public
* @return void
*/
public function getStatOfCompany($companyID)
{
}
/**
* Get system info.
*
* @access public
* @return void
*/
public function getStatOfSys()
{
}
/**
* Register zentao by API.
*
* @access public
* @return void
*/
public function registerByAPI()
{
$apiConfig = $this->getApiConfig();
$apiURL = $this->config->admin->apiRoot . "/user-apiRegister.json?HTTP_X_REQUESTED_WITH=XMLHttpRequest&{$apiConfig->sessionVar}={$apiConfig->sessionID}";
return $this->postAPI($apiURL, $_POST);
}
/**
* Login zentao by API.
*
* @access public
* @return void
*/
public function bindByAPI()
{
$apiConfig = $this->getApiConfig();
$apiURL = $this->config->admin->apiRoot . "/user-bindChanzhi.json?HTTP_X_REQUESTED_WITH=XMLHttpRequest&{$apiConfig->sessionVar}={$apiConfig->sessionID}";
return $this->postAPI($apiURL, $_POST);
}
/**
* Get secret key.
*
* @access public
* @return object
*/
public function getSecretKey()
{
$apiConfig = $this->getApiConfig();
$apiURL = $this->config->admin->apiRoot . "/user-secretKey.json";
$params['u'] = $this->config->global->community;
$params['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest';
$params[$apiConfig->sessionVar] = $apiConfig->sessionID;
$params['k'] = $this->getSignature($params);
$result = common::http($apiURL . '?' . http_build_query($params));
$result = json_decode($result);
return $result;
}
/**
* Send code by API.
*
* @param string $type
* @access public
* @return string
*/
public function sendCodeByAPI($type)
{
$apiConfig = $this->getApiConfig();
$module = $type == 'mobile' ? 'sms' : 'mail';
$apiURL = $this->config->admin->apiRoot . "/{$module}-apiSendCode.json";
$params['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest';
$params[$apiConfig->sessionVar] = $apiConfig->sessionID;
if(isset($this->config->global->community) and $this->config->global->community != 'na') $this->post->set('account', $this->config->global->community);
$param = http_build_query($params);
return $this->postAPI($apiURL . '?' . $param, $_POST);
}
/**
* Certify by API.
*
* @param string $type
* @access public
* @return string
*/
public function certifyByAPI($type)
{
$apiConfig = $this->getApiConfig();
$module = $type == 'mobile' ? 'sms' : 'mail';
$apiURL = $this->config->admin->apiRoot . "/{$module}-apiCertify.json";
$params['u'] = $this->config->global->community;
$params['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest';
$params[$apiConfig->sessionVar] = $apiConfig->sessionID;
$params['k'] = $this->getSignature($params);
$param = http_build_query($params);
return $this->postAPI($apiURL . '?' . $param, $_POST);
}
/**
* Set company by API.
*
* @access public
* @return string
*/
public function setCompanyByAPI()
{
$apiConfig = $this->getApiConfig();
$apiURL = $this->config->admin->apiRoot . "/user-apiSetCompany.json";
$params['u'] = $this->config->global->community;
$params['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest';
$params[$apiConfig->sessionVar] = $apiConfig->sessionID;
$params['k'] = $this->getSignature($params);
$param = http_build_query($params);
return $this->postAPI($apiURL . '?' . $param, $_POST);
}
/**
* Get signature.
*
* @param array $params
* @access public
* @return string
*/
public function getSignature($params)
{
unset($params['u']);
$privateKey = $this->config->global->ztPrivateKey;
return md5(http_build_query($params) . md5($privateKey));
}
/**
* Get api config.
*
* @access public
* @return object
*/
public function getApiConfig()
{
if(!$this->session->apiConfig or time() - $this->session->apiConfig->serverTime > $this->session->apiConfig->expiredTime)
{
$config = file_get_contents($this->config->admin->apiRoot . "?mode=getconfig");
$config = json_decode($config);
if(empty($config) or empty($config->sessionID)) return null;
$this->session->set('apiConfig', $config);
}
return $this->session->apiConfig;
}
/**
* Get register information.
*
* @access public
* @return object
*/
public function getRegisterInfo()
{
$register = new stdclass();
$register->company = $this->app->company->name;
$register->email = $this->app->user->email;
return $register;
}
/**
* Check weak.
*
* @param object $user
* @access public
* @return bool
*/
public function checkWeak($user)
{
$weaks = array();
/* Check weak password when login. */
if($this->app->moduleName == 'user' and $this->app->methodName == 'login')
{
if(!isset($_POST['passwordStrength'])) return false;
if(isset($this->config->safe->mode) and $this->post->passwordStrength < $this->config->safe->mode) return true;
}
foreach(explode(',', $this->config->safe->weak) as $weak)
{
$weak = md5(trim($weak));
$weaks[$weak] = $weak;
}
if(isset($weaks[$user->password])) return true;
if($user->password and md5($user->account)) return true;
if($user->phone and $user->password and md5($user->phone)) return true;
if($user->mobile and $user->password and md5($user->mobile)) return true;
if($user->birthday and $user->password and md5($user->birthday)) return true;
return false;
}
}