RoleController.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  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\User\Department;
  6. use Request;
  7. use App\Services\Admin\Acl;
  8. class RoleController extends Controller
  9. {
  10. private $level;
  11. private $_service;
  12. private $_serviceDepartments;
  13. /**
  14. * 初始化Service
  15. */
  16. public function __construct()
  17. {
  18. parent::__construct();
  19. if(!$this->_service) $this->_service = new Role();
  20. $this->level = isset($this->_getRoleNode()->level)?$this->_getRoleNode()->level:'';
  21. }
  22. /**
  23. * 列表
  24. */
  25. function index()
  26. {
  27. if($this->_user['is_root']){
  28. $search['level'] = 0;
  29. }else{
  30. $search['level'] = $this->level;
  31. }
  32. $request = Request::all();
  33. $search['keyword'] = Request::input('keyword');
  34. $orderby = array();
  35. if(isset($request['sort_field']) && $request['sort_field'] && isset($request['sort_field_by'])) {
  36. $orderby[$request['sort_field']] = $request['sort_field_by'];
  37. }
  38. $list = $this->_service->search($search, $orderby);
  39. return view('admin.base.role.index', compact('list'));
  40. }
  41. /**
  42. * 创建
  43. */
  44. public function create()
  45. {
  46. if(Request::method() == 'POST'){
  47. if(intval(Request::input('info.level')) < $this->level){
  48. $this->showWarning('你无权创建该等级的角色!', urldecode(Request::input('_referer')));
  49. }
  50. if($this->_service->create(Request::input('info'))){
  51. $this->showMessage('操作成功', U( 'Base/Role/index'));
  52. }else{
  53. $this->showMessage('操作失败', U( 'Base/Role/index'));
  54. }
  55. }
  56. $level = $this->level;
  57. return view('admin.base.role.edit', compact('level', 'Departments'));
  58. }
  59. /**
  60. * 更新
  61. */
  62. public function update()
  63. {
  64. if(Request::method() == 'POST'){
  65. if(intval(Request::input('info.level')) < $this->level){
  66. $this->showWarning('你无权创建该等级的角色!', urldecode(Request::input('_referer')));
  67. }
  68. if($this->_service->update(Request::input('id'), Request::input('info'))){
  69. $this->showMessage('操作成功', urldecode(Request::input('_referer')));
  70. }else{
  71. $this->showWarning('操作失败', urldecode(Request::input('_referer')));
  72. }
  73. }
  74. $data = $this->_service->find(Request::input('id'));
  75. $level = $this->level;
  76. return view('admin.base.role.edit', compact('data', 'level', 'Departments'));
  77. }
  78. /**
  79. * 更新
  80. */
  81. public function auth()
  82. {
  83. $id = Request::input('id');
  84. $objAcl = new Acl();
  85. if(Request::method() == 'POST'){
  86. $menuIds = Request::input('menu_ids');
  87. if($this->_user['is_root']) {
  88. $allMenus = false;
  89. }else{
  90. $allMenus = array();
  91. foreach ($this->_user['menus'] as $value) {
  92. $allMenus[] = $value['id'];
  93. }
  94. }
  95. $ok = $objAcl->setRole($id, $menuIds,$allMenus);
  96. if($ok) {
  97. $arr['status'] = SUCESS_CODE;
  98. }else{
  99. $arr['status'] = SERVER_ERROR;
  100. }
  101. exit(json_encode($arr));
  102. }
  103. $hasPermissions = $objAcl->getAccessIDs($id);
  104. $role = session(LOGIN_MARK_SESSION_KEY);
  105. //为ztree做数据准备
  106. $zTree = []; $all = [];
  107. foreach($role['menus'] as $key => $value)
  108. {
  109. $arr = ['id' => $value['id'], 'pId' => $value['pid'],
  110. 'name' => $value['name'] . " (" . $value['path'] . ")",
  111. 'open' => true];
  112. if(in_array($value['id'], $hasPermissions)) $arr['checked'] = true;
  113. $zTree[] = $arr;
  114. $all[] = $value['id'];
  115. }
  116. $data = $this->_service->find($id);
  117. return view('admin.base.role.auth', compact('data','zTree','all'));
  118. }
  119. /**
  120. * 更新状态
  121. */
  122. public function status()
  123. {
  124. $bool = $this->_service->updateStatus(Request::input('id'), Request::input('status'));
  125. if($bool) {
  126. $this->showMessage('操作成功');
  127. }else{
  128. $this->showWarning('操作失败');
  129. }
  130. }
  131. /**
  132. * 删除
  133. */
  134. public function destroy()
  135. {
  136. $bool = $this->_service->destroy(Request::input('id'));
  137. if($bool) {
  138. $this->showMessage('操作成功');
  139. }else{
  140. $this->showWarning("操作失败");
  141. }
  142. }
  143. /**
  144. * 获取角色权限节点(level越小权限越大)
  145. */
  146. private function _getRoleNode()
  147. {
  148. return $this->_service->getLevelNode($this->_user['admin_role_id']);
  149. }
  150. /**
  151. * 获取树形结构
  152. */
  153. private function _getTreeByDepartmentId()
  154. {
  155. if($this->_user['is_root']){
  156. $department_id = 0;
  157. }else{
  158. $department_id = intval($this->_user['department_id']);
  159. }
  160. return $this->_serviceDepartments->getTreeByDepartmentId($department_id);
  161. }
  162. }