PageRenderTime 24ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/public/module/system/admin_user_management.php

https://github.com/karlom/gameadmin
PHP | 233 lines | 202 code | 25 blank | 6 comment | 47 complexity | 21f215725be8f85bd78bb414665c42e1 MD5 | raw file
  1. <?php
  2. include_once '../../../protected/config/config.php';
  3. include_once SYSDIR_ADMIN_INCLUDE.'/global.php';
  4. include_once SYSDIR_ADMIN_CLASS.'/admin_user.class.php';
  5. include_once SYSDIR_ADMIN_CLASS."/admin_group.class.php";
  6. $action = SS($_REQUEST['action']);
  7. if ('enabled' == $action) {
  8. $uid = intval($_GET['id']);
  9. $username = SS($_GET['username']);
  10. $now = time();
  11. $sql = " update ".T_ADMIN_USER." set `user_status`=1, `last_login_time`={$now} where `uid`={$uid} and `username`='{$username}' ";
  12. IQuery($sql);
  13. }
  14. if ('disabled' == $action) {
  15. $uid = intval($_GET['id']);
  16. $username = SS($_GET['username']);
  17. $sql = " update ".T_ADMIN_USER." set `user_status`=0 where `uid`={$uid} and `username`='{$username}' ";
  18. IQuery($sql);
  19. }
  20. //显示添加,编辑界面
  21. if($action == 'add' || $action == 'modify')
  22. {
  23. if (isset($_GET['id']))
  24. {
  25. $uid = intval($_GET['id']);
  26. $enum = AdminUserClass::enum();
  27. $udata = $enum[$uid];
  28. $smarty->assign("udata", $udata);
  29. $smarty->assign("uid",$uid);
  30. }
  31. $groups = AdminGroupClass::enum();
  32. if (is_array($groups)) {
  33. foreach($groups as $groupid => $group) {
  34. if(!$auth->assertAdminGroupAccess($groupid)) {
  35. unset($groups[$groupid]);
  36. }
  37. }
  38. }
  39. $smarty->assign("groups", $groups);
  40. $smarty->assign("action", $action);
  41. $smarty->display("module/system/admin_user_edit.tpl");
  42. exit;
  43. }
  44. if($action == 'add_submit')
  45. {
  46. $username = trim($_POST['username']);
  47. $password = trim($_POST['passwd']);
  48. $validUserName = validUsername($username);
  49. $validPassword = validPassword($password);
  50. if (true !== $validUserName) {
  51. die($validUserName);
  52. }
  53. if (true !== $validPassword) {
  54. die($validPassword);
  55. }
  56. if (strlen($password) < 6){
  57. die('密码要求至少6位');
  58. }
  59. $comment = SS(trim($_POST['comment']));
  60. if (empty($comment)){
  61. die('描述说明不能为空');
  62. }
  63. $sqlChkExist = "SELECT `uid` FROM `".T_ADMIN_USER."` WHERE `username`='{$username}' ";
  64. $rsChkExist = IFetchRowOne($sqlChkExist);
  65. if ($rsChkExist['uid']) {
  66. die("用户名 {$username} 已经被使用");
  67. }
  68. $uid = AdminUserClass::create($username, $password, $comment);
  69. if(!empty($_POST['groupid']))
  70. {
  71. $groupid = intval($_POST['groupid']);
  72. AdminUserClass::changeGroup($uid, $groupid);
  73. $log = new AdminLogClass();
  74. $desc = '权限组:'.$groupid;
  75. $log->Log(AdminLogClass::TYPE_SYS_CREATE_ADMIN, $desc, 0, '', 0, $username);
  76. }
  77. if($uid){
  78. echo "添加新用户 {$username} 成功";
  79. }
  80. }
  81. if($action == 'modify_submit')
  82. {
  83. $uid = intval($_GET['id']);
  84. $enum = AdminUserClass::enum();
  85. $udata = $enum[$uid];
  86. if(!$udata) {
  87. die('用户不存在');
  88. }
  89. $password = trim($_POST['passwd']);
  90. if ($password) {
  91. $validPassword = validPassword($password);
  92. if (true !== $validPassword) {
  93. die($validPassword);
  94. }
  95. if (strlen($password) < 6){
  96. die('密码要求至少6位');
  97. }
  98. $password = md5($password);
  99. }else {
  100. $password = null;
  101. }
  102. $comment = SS(trim($_POST['comment']));
  103. if (empty($comment)){
  104. $comment = null;
  105. }
  106. if(!empty($_POST['groupid'])) {
  107. $groupid = intval($_POST['groupid']);
  108. } else{
  109. $groupid = null;
  110. }
  111. if(AdminUserClass::update($uid, $password, $groupid, $comment)) {
  112. $log = new AdminLogClass();
  113. if($groupid !== null) {
  114. $desc = '权限组:'.$groupid;
  115. $log->Log(AdminLogClass::TYPE_SYS_MODIFY_ADMIN_GROUPID, $desc, 0, '', 0, $username);
  116. }
  117. if($password !== null) {
  118. $log->Log(AdminLogClass::TYPE_SYS_MODIFY_ADMIN_PASSWORD, '', 0, '', 0, $username);
  119. }
  120. }
  121. echo "修改成功";
  122. }
  123. $enum = AdminUserClass::enum();
  124. $admins = gen_admins($enum);
  125. foreach($admins as $key => $user)
  126. {// 最后检查数组,把没有记录的移除。
  127. if(!isset($user['uid']))
  128. {
  129. unset($admins[$key]);
  130. }
  131. }
  132. $adminList = get_admin_list('all');
  133. if(isPost() && isset($_POST['selectItem']) && isset($_POST['adminList']) ){
  134. $list = $_POST['adminList'];
  135. $users = $_POST['selectItem'];
  136. if(!empty($list)){
  137. foreach($list as $v){
  138. $syncTolist[$v] = $adminList[$v];
  139. }
  140. }
  141. if(!empty($users)){
  142. foreach($users as $v){
  143. $syncUsers[$v] = $enum[$v];
  144. unset($syncUsers[$v]['uid']);
  145. unset($syncUsers[$v]['groupname']);
  146. }
  147. }
  148. // print_r($syncUsers);
  149. if($syncTolist && $syncUsers) {
  150. foreach($syncTolist as $v){
  151. //向后台API请求
  152. // print_r($syncUsers);
  153. $timestamp = time();
  154. $key = urlencode(md5($timestamp.ADMIN_GAME_AUTH_KEY));
  155. $jsonBanList = urlencode(decodeUnicode(json_encode($syncUsers)));
  156. $action = "sync";
  157. $paramStr = "timestamp={$timestamp}&key={$key}&action={$action}&jsonBanList={$jsonBanList}";
  158. $apiUrl = rtrim($v['url'], '/').'/api/rsync_admin_user.php';
  159. $resultJson = curlPost($apiUrl, $paramStr);
  160. $result = json_decode($resultJson, true);
  161. if($result['result'] == 1){
  162. $msg[] = "成功同步到【{$v['name']}】.";
  163. } else {
  164. $msg[] = "同步到【{$v['name']}】 出错!";
  165. }
  166. // var_dump($resultJson);
  167. }
  168. }
  169. }
  170. //print_r($admins);
  171. $smarty->assign("enum", array_values($admins));
  172. $smarty->assign("adminList", $adminList);
  173. $smarty->assign("msg", $msg);
  174. $smarty->display("module/system/admin_user_list.tpl");
  175. exit;
  176. function gen_admins($enum) {
  177. global $auth;
  178. $admins = array();
  179. foreach($enum as $uid => $udata) {
  180. if($auth->assertAdminGroupAccess(intval($udata['groupid']))) {
  181. $admins[$uid] = $udata;
  182. if ( 0 == $udata['user_status'] ) {
  183. $admins[$uid]['user_status_str'] = '已被禁用';
  184. }elseif ((time() - $udata['last_login_time']) > LOGIN_FROST_TIME * 86400) {
  185. $admins[$uid]['user_status_str'] = '超'.LOGIN_FROST_TIME.'天未登录被系统冻结';
  186. $admins[$uid]['user_status'] = 2 ;
  187. }else{
  188. $admins[$uid]['user_status_str'] = '正常';
  189. }
  190. $admins[$uid]['last_login_time'] = date('Y-m-d H:i',$udata['last_login_time'] );
  191. }
  192. }
  193. return $admins;
  194. }
  195. function get_admin_list($all="") {
  196. if(!$all){
  197. $where = "where available=1";
  198. }
  199. $sql = "select * from t_admin_list {$where}";
  200. $list = IFetchRowSet($sql);
  201. $data = array();
  202. if(!empty($list)){
  203. foreach($list as $v ){
  204. $data[$v['id']] = $v;
  205. }
  206. }
  207. return $data;
  208. }