SysUser.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. <?php
  2. declare (strict_types = 1);
  3. /**
  4. * +----------------------------------------------------------------------
  5. * | 后台登录控制制器
  6. * +----------------------------------------------------------------------
  7. */
  8. namespace app\sys\controller;
  9. // 引入框架内置类
  10. use think\facade\Request;
  11. use think\facade\Event;
  12. use think\facade\Session;
  13. use think\facade\View;
  14. use think\captcha\facade\Captcha;
  15. use think\facade\Config;
  16. use app\common\model\SysUser as SysUserModel;
  17. use app\common\model\SysRole as SysRoleModel;
  18. class SysUser extends Base
  19. {
  20. public function index()
  21. {
  22. $roleid = $this->getSysUser()->roleid;
  23. $list = SysUserModel::queryList($roleid);
  24. View::assign('list', $list);
  25. return View::fetch();
  26. }
  27. // public function info($id = 0)
  28. // {
  29. // if ($id != 0) {
  30. // $data = $this->model->find($id);
  31. // } else {
  32. // $data = ['id'=>0, 'username' => '', 'role_id' => 0, 'truename' => '', 'email' => '', 'note' => ''];
  33. // }
  34. // $dataRole = SysRoleModel::column('name','id');
  35. // return View::fetch('save',[
  36. // 'data' => $data,
  37. // 'dataRole' => $dataRole
  38. // ]);
  39. // }
  40. public function save($id = 0)
  41. {
  42. if ($this->app->request->isPost()) {
  43. $params = $this->app->request->param();
  44. if ($params['username'] =='' || $params['roleid'] =='') {
  45. $this->error("用户名 or 角色 不能为空!");
  46. }
  47. try {
  48. $id = $params['userid'];
  49. unset($params['userid']);
  50. if ($id != 0) {
  51. if (empty($params['password'])) {
  52. unset($params['password']);
  53. } else {
  54. $params['salt'] = generate_stochastic_string();
  55. $params['password'] = md5($params['password'].$params['salt']);
  56. }
  57. SysUserModel::update($params, ['userid' => $id]);
  58. } else {
  59. $params['password'] = empty($params['password']) ? Config::get('app.default_password') : $params['password'];
  60. $params['salt'] = generate_stochastic_string();
  61. $params['password'] = md5($params['password'].$params['salt']);
  62. SysUserModel::create($params);
  63. }
  64. } catch (\Exception $e) {
  65. $msg = $e->getMessage();
  66. $this->error("错误代码:".$msg);
  67. }
  68. $this->success('操作成功', 'sys_user/index');
  69. } else {
  70. if ($id != 0) {
  71. $data = SysUserModel::find($id);
  72. } else {
  73. $data = null;
  74. }
  75. $dataRole = SysRole::column('name','roleid');
  76. View::assign('data', $data);
  77. View::assign('dataRole', $dataRole);
  78. return View::fetch();
  79. }
  80. }
  81. public function isAvailable($id = null, $username = '')
  82. {
  83. if ($this->app->request->isAjax()) {
  84. $data = $this->model->where('username', $username)->find();
  85. if ($data && $data->id != $id) {
  86. return ['code' => 2, 'msg'=>'用户名已存在, 请使用其他用户名'];
  87. } else {
  88. return ['code' => 0, 'msg'=>'用户名可用'];
  89. }
  90. }
  91. }
  92. public function delete($id = null)
  93. {
  94. if ($this->app->request->isAjax()) {
  95. if (is_array($id)) {
  96. if (in_array(session('uid'), $id)) {
  97. return ['code'=>0,'msg'=>'当前登录用户无法删除'];
  98. }
  99. } else {
  100. if ($id == session('uid')) {
  101. return ['code'=>0,'msg'=>'当前登录用户无法删除'];
  102. }
  103. }
  104. if (SysUserModel::destroy($id)) {
  105. return ['code' => 1,'msg'=>'删除成功'];
  106. } else {
  107. return ['code' => 0,'msg'=>'删除失败'];
  108. }
  109. }
  110. }
  111. // 停用or启用管理员
  112. public function status($id, $status)
  113. {
  114. if ($this->app->request->isAjax()) {
  115. if ($id == session('uid')) {
  116. return ['code'=>0,'msg'=>'当前登录用户无法停用'];
  117. }
  118. if ($this->model->save(['status' => $status], ['id' => $id])) {
  119. return ['code'=>1,'msg'=>'操作成功'];
  120. } else {
  121. return ['code'=>0,'msg'=>'操作失败'];
  122. }
  123. }
  124. }
  125. // 修改密码
  126. public function password()
  127. {
  128. if ($this->app->request->isPOST()) {
  129. $params = $this->app->request->param();
  130. $info = SysUserModel::field('password,salt')->find(session('adminuser.userid'));
  131. if ($info->password != md5($params['oldpassword'].$info->salt)) {
  132. $this->error('原密码不正确');
  133. }
  134. if ($params['newpassword']!=$params['repassword']) {
  135. $this->error('两次新密码不一致,请核查');
  136. }
  137. $info->salt = generate_stochastic_string();
  138. $info->password = md5($params['newpassword'] . $info->salt);
  139. if ($info->save()) {
  140. session(null);
  141. $this->success("修改成功,请重新登陆", 'login/index');
  142. } else {
  143. $this->error('修改失败,请稍后重试');
  144. }
  145. } else {
  146. return View::fetch();
  147. }
  148. }
  149. }