MediaBlocklistController.php 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use App\MediaBlocklist;
  5. class MediaBlocklistController extends Controller
  6. {
  7. public function __construct()
  8. {
  9. $this->middleware('auth');
  10. $this->middleware('admin');
  11. }
  12. public function add(Request $request)
  13. {
  14. $this->validate($request, [
  15. 'hash' => 'required|string|size:64',
  16. 'name' => 'nullable|string',
  17. 'description' => 'nullable|string|max:500',
  18. ]);
  19. $hash = $request->input('hash');
  20. abort_if(preg_match("/^([a-f0-9]{64})$/", $hash) !== 1, 400);
  21. $name = $request->input('name');
  22. $description = $request->input('description');
  23. $mb = new MediaBlocklist;
  24. $mb->sha256 = $hash;
  25. $mb->name = $name;
  26. $mb->description = $description;
  27. $mb->save();
  28. return redirect('/i/admin/media?layout=banned');
  29. }
  30. public function delete(Request $request)
  31. {
  32. $this->validate($request, [
  33. 'id' => 'required|integer'
  34. ]);
  35. $media = MediaBlocklist::findOrFail($request->input('id'));
  36. $media->delete();
  37. return redirect('/i/admin/media?layout=banned');
  38. }
  39. }