/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $ip = $request->getClientIp(); $count = Ban::where('ip', '=', $ip)->count(); if ($count > 0) { return response('banned', 403, ['Content-Type' => 'text/plain']); } return $next($request); }
public function home(Request $request) { $filters = new Filters($request->get('filters')); if ($request->has('delete_and_ban')) { $files = FileRecord::ip($filters->ip)->get(); foreach ($files as $file) { $file->delete(); } Ban::createFromIp($filters->ip); return redirect()->to($filters->url([], ['delete_and_ban']))->with('success', new MessageBag(['Files deleted and IP ban created'])); } $query = FileRecord::query()->filter($filters); $count = $query->count(); $files = $query->orderBy('created_at', 'desc')->paginate(20)->appends($filters->queryParameters()); $size = intval($this->db->table('file_records')->sum('filesize')); $size = FileSizeFormatter::format($size); return view('admin.home')->with('count', $count)->with('size', $size)->with('files', $files)->with('filters', $filters); }
public static function createFromIp($ip) { $ban = Ban::create(['ip' => $ip]); return $ban; }