<?php

namespace App\Http\Middleware;

use Closure;
use DB;
use Illuminate\Support\Facades\Auth;

class IpblockedMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param \Illuminate\Http\Request $request
     * @param \Closure $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $config = config('settingConfig');
        /*  if($config['cnf_allowip'] !='')
         {
             $ipsAllow = explode(',',preg_replace('/\s+/', '', $config['cnf_allowip']));
             if(count($ipsAllow) >= 1 )
             {
 //                echo count($ipsAllow);exit;
                 if(!in_array($request->ip(), $ipsAllow))
                 {
                     return redirect('restric');
                 }
             }
          } */

        $uri = $request->path();
        if ($uri == 'maintenance' || $uri == 'restric')
            return $next($request);


        if ($config['cnf_maintenance'] == 'true') {
            $ipsAllow = explode(',', preg_replace('/\s+/', '', $config['cnf_allowip']));
            if (count($ipsAllow) >= 1) {

                if (!in_array($request->ip(), $ipsAllow)) {
                    return redirect('maintenance');
                }
            }
        }

        $ips = explode(',', preg_replace('/\s+/', '', $config['cnf_restrictip']));

        if (is_array($ips)) {
            if (in_array($request->ip(), $ips)) {
                return redirect('restric');
            }
        }


        $uas = explode(',', preg_replace('/\s+/', '', $config['cnf_restrictrefer']));
        if (is_array($uas)) {
            foreach ($uas as $ua) {

                if (stripos('pad' . $request->header('User-Agent'), $ua))
                    return redirect('restric');
            }

        }

        // $lock_count = DB::table('tb_user_login_fails')->where('ip_addr',$request->ip())->where('lock_time','>',date('Y-m-d H:i:s'))->count();
        $lock_count = 0;
        if ($lock_count > $config['cnf_restrictcount'])
            return redirect('restric');


        if (!\Session::has('lang')) {
            \Session::put('lang', config('website.cnf_lang'));
        }

        app()->setLocale(\Session::get('lang'));
        if (\Auth::check()) {
            //dd(\Auth::user());
            if (\Auth::user()->blocked) {
                \Auth::logout();
                \Session::put('uid', null);
                return redirect('/')->with('status', 'error')->with('message', __('core.note_restric'));
            }

            if (!\Session::has('uid')) {
                $session = array(
                    'gid' => Auth::user()->group_id,
                    'uid' => Auth::user()->id,
                    'eid' => Auth::user()->email,
                    'll' => Auth::user()->last_login,
                    'fid' => Auth::user()->first_name . ' ' . Auth::user()->last_name,
                    'username' => Auth::user()->username,
                    'join' => Auth::user()->created_at
                );
                //  \Session::put('gid',Auth::user()->group_id);
                session($session);

            }
        }

        return $next($request);
    }
}
