RuleGroupController.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  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($request->except('page'));
  21. return view('admin.rule.group.index', $view);
  22. }
  23. // 添加审计规则分组页面
  24. public function create()
  25. {
  26. $view['ruleList'] = Rule::all();
  27. return view('admin.rule.group.info', $view);
  28. }
  29. // 添加审计规则分组
  30. public function store(Request $request): RedirectResponse
  31. {
  32. $validator = Validator::make($request->all(), [
  33. 'name' => 'required',
  34. 'type' => 'required|boolean',
  35. 'rules' => 'required',
  36. ]);
  37. if ($validator->fails()) {
  38. return Redirect::back()->withInput()->withErrors($validator->errors());
  39. }
  40. $obj = new RuleGroup();
  41. $obj->name = $request->input('name');
  42. $obj->type = (int) $request->input('type');
  43. $obj->rules = $request->input('rules');
  44. $obj->save();
  45. if ($obj->id) {
  46. return Redirect::back()->with('successMsg', '操作成功');
  47. }
  48. return Redirect::back()->withInput()->withErrors('操作失败');
  49. }
  50. // 编辑审计规则分组页面
  51. public function edit($id)
  52. {
  53. $view['ruleGroup'] = RuleGroup::find($id);
  54. $view['ruleList'] = Rule::all();
  55. return view('admin.rule.group.info', $view);
  56. }
  57. // 编辑审计规则分组
  58. public function update(Request $request, $id): RedirectResponse
  59. {
  60. $validator = Validator::make($request->all(), [
  61. 'name' => 'required',
  62. 'type' => 'required|boolean',
  63. ]);
  64. if ($validator->fails()) {
  65. return Redirect::back()->withInput()->withErrors($validator->errors());
  66. }
  67. $ret = RuleGroup::find($id)->update([
  68. 'name' => $request->input('name'),
  69. 'type' => $request->input('type'),
  70. 'rules' => $request->input('rules'),
  71. ]);
  72. if ($ret) {
  73. return Redirect::back()->with('successMsg', '操作成功');
  74. }
  75. return Redirect::back()->withInput()->withErrors('操作失败');
  76. }
  77. // 删除审计规则分组
  78. public function destroy($id): JsonResponse
  79. {
  80. try {
  81. RuleGroup::whereId($id)->delete();
  82. RuleGroupNode::whereRuleGroupId($id)->delete();
  83. } catch (Exception $e) {
  84. return Response::json(['status' => 'fail', 'message' => '删除失败,'.$e->getMessage()]);
  85. }
  86. return Response::json(['status' => 'success', 'message' => '清理成功']);
  87. }
  88. // 规则分组关联节点
  89. public function assignNode($id)
  90. {
  91. $view['ruleGroup'] = RuleGroup::find($id);
  92. $view['nodeList'] = Node::all();
  93. return view('admin.rule.group.assign', $view);
  94. }
  95. // 规则分组关联节点
  96. public function assign(Request $request, $id)
  97. {
  98. $nodes = $request->input('nodes');
  99. $ruleGroup = RuleGroup::findOrFail($id);
  100. try {
  101. if ($ruleGroup->nodes === $nodes) {
  102. return Redirect::back()->with('successMsg', '检测为未修改,无变动!');
  103. }
  104. RuleGroupNode::whereRuleGroupId($id)->delete();
  105. if ($nodes) {
  106. $ruleGroup->nodes = $nodes;
  107. if (! $ruleGroup->save()) {
  108. return Redirect::back()->withErrors('更新错误!');
  109. }
  110. foreach ($nodes as $nodeId) {
  111. $obj = new RuleGroupNode();
  112. $obj->rule_group_id = $id;
  113. $obj->node_id = $nodeId;
  114. $obj->save();
  115. }
  116. } else {
  117. RuleGroup::find($id)->update(['nodes' => null]);
  118. }
  119. } catch (Exception $e) {
  120. return Redirect::back()->withInput()->withErrors($e->getMessage());
  121. }
  122. return Redirect::back()->with('successMsg', '操作成功');
  123. }
  124. }