🏡 index : ~doyle/zpan.git

<?php
namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\RequestBan;
use Illuminate\Http\Request;

class RequestLineBanController extends Controller {
    /**
     * Show the administrator a list of all bans.
     *
     * @return mixed
     */
    public function index()
    {
        return view('admin.request-bans', [
            'bans' => RequestBan::orderBy('id', 'desc')->paginate(15)
        ]);
    }

    /**
     * Show the administrator a form to ban an IP address.
     *
     * @return mixed
     */
    public function banForm()
    {
        return view('admin.request-bans-form');
    }

    /**
     * Ban an IP from the request line
     *
     * @param Request $request
     * @return mixed
     */
    public function ban(Request $request)
    {
        $this->validate($request, [
            'ip' => 'required|ip|unique:request_bans,ip_address,NULL,id,deleted_at,NULL'
        ]);

        $ban = new RequestBan;
        $ban->ip_address = $request->get('ip');
        $ban->added_by = auth()->user()->userid;
        $ban->save();

        return redirect()->route('dashboard::admin::request-ban')->with('msg', [
            'type' => 'success',
            'msg' => _('Successfully banned IP address from the request line.')
        ]);
    }

    /**
     * Unban an IP from the request line.
     *
     * @param int $id id of the ip to unban
     * @return mixed
     */
    public function unban(int $id)
    {
        RequestBan::findOrFail($id)->delete();

        return redirect()->back()->with('msg', [
            'type' => 'success',
            'msg' => _('Successfully unbanned IP from the request line.')
        ]);
    }
}