RuleGroupController.php 3.7 KB

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