/module/admin/model.php

https://github.com/easysoft/zentaopms · PHP · 257 lines · 124 code · 25 blank · 108 comment · 20 complexity · 7c95b4bae4519e26eaab110fdd33183c MD5 · raw file

  1. <?php
  2. /**
  3. * The model file of admin module of ZenTaoPMS.
  4. *
  5. * @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
  6. * @license ZPL(http://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
  7. * @author Chunsheng Wang <chunsheng@cnezsoft.com>
  8. * @package admin
  9. * @version $Id: model.php 5148 2013-07-16 01:31:08Z chencongzhi520@gmail.com $
  10. * @link http://www.zentao.net
  11. */
  12. ?>
  13. <?php
  14. class adminModel extends model
  15. {
  16. /**
  17. * The api root.
  18. *
  19. * @var string
  20. * @access public
  21. */
  22. public $apiRoot;
  23. /**
  24. * Post data form API.
  25. *
  26. * @param string $url
  27. * @param string $formvars
  28. * @access public
  29. * @return void
  30. */
  31. public function postAPI($url, $formvars = '')
  32. {
  33. return common::http($url, $formvars);
  34. }
  35. /**
  36. * Get status of zentaopms.
  37. *
  38. * @access public
  39. * @return void
  40. */
  41. public function getStatOfPMS()
  42. {
  43. $sql = "SHOW TABLE STATUS";
  44. $tables = $this->dbh->query($sql)->fetchALL();
  45. }
  46. /**
  47. * Get state of company.
  48. *
  49. * @param int $companyID
  50. * @access public
  51. * @return void
  52. */
  53. public function getStatOfCompany($companyID)
  54. {
  55. }
  56. /**
  57. * Get system info.
  58. *
  59. * @access public
  60. * @return void
  61. */
  62. public function getStatOfSys()
  63. {
  64. }
  65. /**
  66. * Register zentao by API.
  67. *
  68. * @access public
  69. * @return void
  70. */
  71. public function registerByAPI()
  72. {
  73. $apiConfig = $this->getApiConfig();
  74. $apiURL = $this->config->admin->apiRoot . "/user-apiRegister.json?HTTP_X_REQUESTED_WITH=XMLHttpRequest&{$apiConfig->sessionVar}={$apiConfig->sessionID}";
  75. return $this->postAPI($apiURL, $_POST);
  76. }
  77. /**
  78. * Login zentao by API.
  79. *
  80. * @access public
  81. * @return void
  82. */
  83. public function bindByAPI()
  84. {
  85. $apiConfig = $this->getApiConfig();
  86. $apiURL = $this->config->admin->apiRoot . "/user-bindChanzhi.json?HTTP_X_REQUESTED_WITH=XMLHttpRequest&{$apiConfig->sessionVar}={$apiConfig->sessionID}";
  87. return $this->postAPI($apiURL, $_POST);
  88. }
  89. /**
  90. * Get secret key.
  91. *
  92. * @access public
  93. * @return object
  94. */
  95. public function getSecretKey()
  96. {
  97. $apiConfig = $this->getApiConfig();
  98. $apiURL = $this->config->admin->apiRoot . "/user-secretKey.json";
  99. $params['u'] = $this->config->global->community;
  100. $params['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest';
  101. $params[$apiConfig->sessionVar] = $apiConfig->sessionID;
  102. $params['k'] = $this->getSignature($params);
  103. $result = common::http($apiURL . '?' . http_build_query($params));
  104. $result = json_decode($result);
  105. return $result;
  106. }
  107. /**
  108. * Send code by API.
  109. *
  110. * @param string $type
  111. * @access public
  112. * @return string
  113. */
  114. public function sendCodeByAPI($type)
  115. {
  116. $apiConfig = $this->getApiConfig();
  117. $module = $type == 'mobile' ? 'sms' : 'mail';
  118. $apiURL = $this->config->admin->apiRoot . "/{$module}-apiSendCode.json";
  119. $params['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest';
  120. $params[$apiConfig->sessionVar] = $apiConfig->sessionID;
  121. if(isset($this->config->global->community) and $this->config->global->community != 'na') $this->post->set('account', $this->config->global->community);
  122. $param = http_build_query($params);
  123. return $this->postAPI($apiURL . '?' . $param, $_POST);
  124. }
  125. /**
  126. * Certify by API.
  127. *
  128. * @param string $type
  129. * @access public
  130. * @return string
  131. */
  132. public function certifyByAPI($type)
  133. {
  134. $apiConfig = $this->getApiConfig();
  135. $module = $type == 'mobile' ? 'sms' : 'mail';
  136. $apiURL = $this->config->admin->apiRoot . "/{$module}-apiCertify.json";
  137. $params['u'] = $this->config->global->community;
  138. $params['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest';
  139. $params[$apiConfig->sessionVar] = $apiConfig->sessionID;
  140. $params['k'] = $this->getSignature($params);
  141. $param = http_build_query($params);
  142. return $this->postAPI($apiURL . '?' . $param, $_POST);
  143. }
  144. /**
  145. * Set company by API.
  146. *
  147. * @access public
  148. * @return string
  149. */
  150. public function setCompanyByAPI()
  151. {
  152. $apiConfig = $this->getApiConfig();
  153. $apiURL = $this->config->admin->apiRoot . "/user-apiSetCompany.json";
  154. $params['u'] = $this->config->global->community;
  155. $params['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest';
  156. $params[$apiConfig->sessionVar] = $apiConfig->sessionID;
  157. $params['k'] = $this->getSignature($params);
  158. $param = http_build_query($params);
  159. return $this->postAPI($apiURL . '?' . $param, $_POST);
  160. }
  161. /**
  162. * Get signature.
  163. *
  164. * @param array $params
  165. * @access public
  166. * @return string
  167. */
  168. public function getSignature($params)
  169. {
  170. unset($params['u']);
  171. $privateKey = $this->config->global->ztPrivateKey;
  172. return md5(http_build_query($params) . md5($privateKey));
  173. }
  174. /**
  175. * Get api config.
  176. *
  177. * @access public
  178. * @return object
  179. */
  180. public function getApiConfig()
  181. {
  182. if(!$this->session->apiConfig or time() - $this->session->apiConfig->serverTime > $this->session->apiConfig->expiredTime)
  183. {
  184. $config = file_get_contents($this->config->admin->apiRoot . "?mode=getconfig");
  185. $config = json_decode($config);
  186. if(empty($config) or empty($config->sessionID)) return null;
  187. $this->session->set('apiConfig', $config);
  188. }
  189. return $this->session->apiConfig;
  190. }
  191. /**
  192. * Get register information.
  193. *
  194. * @access public
  195. * @return object
  196. */
  197. public function getRegisterInfo()
  198. {
  199. $register = new stdclass();
  200. $register->company = $this->app->company->name;
  201. $register->email = $this->app->user->email;
  202. return $register;
  203. }
  204. /**
  205. * Check weak.
  206. *
  207. * @param object $user
  208. * @access public
  209. * @return bool
  210. */
  211. public function checkWeak($user)
  212. {
  213. $weaks = array();
  214. /* Check weak password when login. */
  215. if($this->app->moduleName == 'user' and $this->app->methodName == 'login')
  216. {
  217. if(!isset($_POST['passwordStrength'])) return false;
  218. if(isset($this->config->safe->mode) and $this->post->passwordStrength < $this->config->safe->mode) return true;
  219. }
  220. foreach(explode(',', $this->config->safe->weak) as $weak)
  221. {
  222. $weak = md5(trim($weak));
  223. $weaks[$weak] = $weak;
  224. }
  225. if(isset($weaks[$user->password])) return true;
  226. if($user->password == md5($user->account)) return true;
  227. if($user->phone and $user->password == md5($user->phone)) return true;
  228. if($user->mobile and $user->password == md5($user->mobile)) return true;
  229. if($user->birthday and $user->password == md5($user->birthday)) return true;
  230. return false;
  231. }
  232. }