RuleGroupController.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\Node;
  5. use App\Models\Rule;
  6. use App\Models\RuleGroup;
  7. use App\Models\RuleGroupNode;
  8. use Exception;
  9. use Illuminate\Http\JsonResponse;
  10. use Illuminate\Http\RedirectResponse;
  11. use Illuminate\Http\Request;
  12. use Redirect;
  13. use Response;
  14. use Validator;
  15. class RuleGroupController extends Controller
  16. {
  17. // 审计规则分组列表
  18. public function index(Request $request)
  19. {
  20. $view['ruleGroupList'] = RuleGroup::paginate(15)->appends(
  21. $request->except('page')
  22. );
  23. return view('admin.rule.group.index', $view);
  24. }
  25. // 添加审计规则分组页面
  26. public function create()
  27. {
  28. $view['ruleList'] = Rule::all();
  29. return view('admin.rule.group.info', $view);
  30. }
  31. // 添加审计规则分组
  32. public function store(Request $request): RedirectResponse
  33. {
  34. $validator = Validator::make(
  35. $request->all(),
  36. [
  37. 'name' => 'required',
  38. 'type' => 'required|boolean',
  39. 'rules' => 'required',
  40. ]
  41. );
  42. if ($validator->fails()) {
  43. return Redirect::back()->withInput()->withErrors(
  44. $validator->errors()
  45. );
  46. }
  47. $obj = new RuleGroup();
  48. $obj->name = $request->input('name');
  49. $obj->type = (int)$request->input('type');
  50. $obj->rules = $request->input('rules');
  51. $obj->save();
  52. if ($obj->id) {
  53. return Redirect::back()->with('successMsg', '操作成功');
  54. }
  55. return Redirect::back()->withInput()->withErrors('操作失败');
  56. }
  57. // 编辑审计规则分组页面
  58. public function edit($id)
  59. {
  60. $view['ruleGroup'] = RuleGroup::findOrFail($id);
  61. $view['ruleList'] = Rule::all();
  62. return view('admin.rule.group.info', $view);
  63. }
  64. // 编辑审计规则分组
  65. public function update(Request $request, $id): RedirectResponse
  66. {
  67. $validator = Validator::make(
  68. $request->all(),
  69. [
  70. 'name' => 'required',
  71. 'type' => 'required|boolean',
  72. ]
  73. );
  74. if ($validator->fails()) {
  75. return Redirect::back()->withInput()->withErrors(
  76. $validator->errors()
  77. );
  78. }
  79. $name = $request->input('name');
  80. $type = (int)$request->input('type');
  81. $rules = $request->input('rules');
  82. $ruleGroup = RuleGroup::findOrFail($id);
  83. $ruleGroup->name = $name;
  84. $ruleGroup->type = $type;
  85. $ruleGroup->rules = $rules;
  86. if ($ruleGroup->save()) {
  87. return Redirect::back()->with('successMsg', '操作成功');
  88. }
  89. return Redirect::back()->withInput()->withErrors('操作失败');
  90. }
  91. // 删除审计规则分组
  92. public function destroy($id): JsonResponse
  93. {
  94. try {
  95. RuleGroup::whereId($id)->delete();
  96. RuleGroupNode::whereRuleGroupId($id)->delete();
  97. } catch (Exception $e) {
  98. return Response::json(
  99. ['status' => 'fail', 'message' => '删除失败,' . $e->getMessage()]
  100. );
  101. }
  102. return Response::json(['status' => 'success', 'message' => '清理成功']);
  103. }
  104. // 规则分组关联节点
  105. public function assignNode($id)
  106. {
  107. $view['ruleGroup'] = RuleGroup::find($id);
  108. $view['nodeList'] = Node::all();
  109. return view('admin.rule.group.assign', $view);
  110. }
  111. public function assign(Request $request, $id)
  112. {
  113. $nodes = $request->input('nodes');
  114. $ruleGroup = RuleGroup::findOrFail($id);
  115. try {
  116. if ($ruleGroup->nodes === $nodes) {
  117. return Redirect::back()->with('successMsg', '检测为未修改,无变动!');
  118. }
  119. RuleGroupNode::whereRuleGroupId($id)->delete();
  120. if ($nodes) {
  121. $ruleGroup->nodes = $nodes;
  122. if ( ! $ruleGroup->save()) {
  123. return Redirect::back()->withErrors("更新错误!");
  124. }
  125. foreach ($nodes as $nodeId) {
  126. $obj = new RuleGroupNode();
  127. $obj->rule_group_id = $id;
  128. $obj->node_id = $nodeId;
  129. $obj->save();
  130. }
  131. } else {
  132. RuleGroup::whereId($id)->update(['nodes' => null]);
  133. }
  134. } catch (Exception $e) {
  135. return Redirect::back()->withInput()->withErrors($e->getMessage());
  136. }
  137. return Redirect::back()->with('successMsg', '操作成功');
  138. }
  139. }