ProjectRoleRightController.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Models\ProjectRole;
  4. use App\Models\ProjectRoleRight;
  5. use App\Models\Right;
  6. use Illuminate\Http\Request;
  7. class ProjectRoleRightController extends BaseController
  8. {
  9. protected $model;
  10. protected $department;
  11. protected $model_name = '权限管理';
  12. protected $pre_uri = '/admin/ProjectRoleRight/';
  13. protected $view_path = 'admin.project-role-rights.';
  14. protected $redirect_index = '/admin/ProjectRoleRight/index';
  15. public function __construct()
  16. {
  17. $this->model = new ProjectRole();
  18. }
  19. public function index()
  20. {
  21. $rights = Right::all();
  22. $project_roles = ProjectRole::all();
  23. $project_role_rights = ProjectRoleRight::all();
  24. $items = [];
  25. foreach($rights as $right) {
  26. $item = [$right];
  27. foreach($project_roles as $project_role) {
  28. $has_right = $project_role_rights->where('right_id', $right->id)->where('project_role_id', $project_role->id)->first() != null;
  29. array_push($item, ['right_id' => $right->id, 'role_id' => $project_role->id, 'has' => $has_right]);
  30. }
  31. array_push($items, $item);
  32. }
  33. list($model, $model_name, $pre_uri) = array($this->model, $this->model_name, $this->pre_uri);
  34. return view($this->view_path . 'index', compact('model', 'model_name','pre_uri', 'items', 'project_roles'));
  35. }
  36. public function change(Request $request)
  37. {
  38. // 赋予权力
  39. if($request->input('has') == 2) {
  40. ProjectRoleRight::updateOrCreate([
  41. 'project_role_id' => $request->input('role_id'),
  42. 'right_id' => $request->input('right_id')
  43. ]);
  44. } else {
  45. // 取消权利
  46. ProjectRoleRight::where([
  47. ['project_role_id', $request->input('role_id')],
  48. ['right_id', $request->input('right_id')]
  49. ])->delete();
  50. }
  51. return response()->json(['status' => 'success', 'info' => '操作成功']);
  52. }
  53. }