UserController.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <?php
  2. namespace App\Http\Controllers\Admin\Base;
  3. use App\Http\Controllers\Admin\Controller;
  4. use App\Services\Admin\Role;
  5. use App\Services\Admin\AdminUser;
  6. use Request;
  7. class UserController extends Controller
  8. {
  9. private $_service;
  10. private $_role_service;
  11. /**
  12. * 初始化Service
  13. */
  14. public function __construct()
  15. {
  16. parent::__construct();
  17. if (!$this->_service) $this->_service = new AdminUser();
  18. if (!$this->_role_service) $this->_role_service = new Role();
  19. }
  20. /**
  21. * 列表
  22. */
  23. function index()
  24. {
  25. $request = Request::all();
  26. $search['keyword'] = Request::input('keyword');
  27. $orderby = array();
  28. if (isset($request['sort_field']) && $request['sort_field'] && isset($request['sort_field_by'])) {
  29. $orderby[$request['sort_field']] = $request['sort_field_by'];
  30. }
  31. $list = $this->_service->search($search, $orderby);
  32. $roles = pairList($this->_getRoles(), 'id', 'name');
  33. return view('admin.base.user.index', compact('list', 'roles'));
  34. }
  35. /**
  36. * 列表
  37. */
  38. function resetPwd()
  39. {
  40. $request = Request::all();
  41. $search['keyword'] = Request::input('keyword');
  42. $search['resetPwd'] = true;
  43. $orderby = array();
  44. if (isset($request['sort_field']) && $request['sort_field'] && isset($request['sort_field_by'])) {
  45. $orderby[$request['sort_field']] = $request['sort_field_by'];
  46. }
  47. $list = $this->_service->search($search, $orderby);
  48. return view('admin.base.user.resetPwd', compact('list'));
  49. }
  50. function resetPwdPass()
  51. {
  52. $ok = $this->_service->resetPwdPass(Request::get('id'));
  53. if ($ok) {
  54. $this->showMessage('操作成功');
  55. } else {
  56. $this->showWarning('操作失败');
  57. }
  58. }
  59. function resetPwdReject()
  60. {
  61. $ok = $this->_service->resetPwdReject(Request::get('id'));
  62. if ($ok) {
  63. $this->showMessage('操作成功');
  64. } else {
  65. $this->showWarning('操作失败');
  66. }
  67. }
  68. /**
  69. * 新建
  70. */
  71. public function create()
  72. {
  73. if (Request::method() == 'POST') {
  74. $data = Request::input('info');
  75. if (isset($data['admin_role_id'])) $data['admin_role_id'] = implode(',', $data['admin_role_id']);
  76. if ($this->_service->create($data)) {
  77. $this->showMessage('操作成功', urldecode(Request::input('_referer')));
  78. } else {
  79. $this->showWarning('操作失败' . $this->_service->getMsg(), urldecode(Request::input('_referer')));
  80. }
  81. }
  82. $data = $this->_service->find(Request::input('id'));
  83. if ($this->_user['is_root']) {
  84. $roles = $this->_getRoles();
  85. } else {
  86. $roles = $this->_getCurrentRoles();
  87. }
  88. return view('admin.base.user.edit', compact('data', 'roles'));
  89. }
  90. /**
  91. * 更新
  92. */
  93. public function update()
  94. {
  95. if (Request::method() == 'POST') {
  96. $data = Request::input('info');
  97. if (isset($data['admin_role_id'])) $data['admin_role_id'] = implode(',', $data['admin_role_id']);
  98. if ($this->_service->update(Request::input('id'), $data)) {
  99. $this->showMessage('操作成功', urldecode(Request::input('_referer')));
  100. } else {
  101. $this->showWarning('操作失败' . $this->_service->getMsg(), urldecode(Request::input('_referer')));
  102. }
  103. }
  104. $data = $this->_service->find(Request::input('id'));
  105. if ($this->_user['is_root']) {
  106. $roles = $this->_getRoles();
  107. } else {
  108. $roles = $this->_getCurrentRoles();
  109. }
  110. return view('admin.base.user.edit', compact('data', 'roles'));
  111. }
  112. public function auth()
  113. {
  114. if (Request::method() == 'POST') {
  115. $info = Request::input('info');
  116. if (!empty($info['admin_role_id'])) {
  117. $info['admin_role_id'] = implode(',', $info['admin_role_id']);
  118. }
  119. if (!$info['id']) {
  120. $this->showWarning('数据不全', urldecode(Request::input('_referer')));
  121. }
  122. if ($this->_service->auth($info)) {
  123. $this->showMessage('操作成功', urldecode(Request::input('_referer')));
  124. } else {
  125. $this->showWarning('操作失败' . $this->_service->getMsg(), urldecode(Request::input('_referer')));
  126. }
  127. }
  128. if ($this->_user['is_root']) {
  129. $roles = $this->_getRoles();
  130. } else {
  131. $roles = $this->_getCurrentRoles();
  132. }
  133. return view('admin.base.user.auth', compact('roles'));
  134. }
  135. public function status()
  136. {
  137. $ok = $this->_service->updateStatus(Request::get('id'), Request::get('status'));
  138. if ($ok) {
  139. $this->showMessage('操作成功');
  140. } else {
  141. $this->showWarning('操作失败' . $this->_service->getMsg());
  142. }
  143. }
  144. /**
  145. * 得到当前角色所拥有的角色
  146. */
  147. private function _getCurrentRoles()
  148. {
  149. $_node = $this->_getRoleNode();
  150. return $this->_role_service->getChildByLevel($_node['level'])->toArray();
  151. }
  152. /**
  153. * 获取角色权限节点(level越小权限越大)
  154. */
  155. private function _getRoleNode()
  156. {
  157. return $this->_role_service->getLevelNode($this->_user['admin_role_id'])->toArray();
  158. }
  159. /**
  160. * 得到所有角色
  161. */
  162. private function _getRoles()
  163. {
  164. return $this->_role_service->get()->toArray();
  165. }
  166. }