<?php namespace App\Http\Middleware;

use Closure;
use Illuminate\Contracts\Auth\Guard;
use Illuminate\Routing\Route;
use Illuminate\Support\Facades\Auth;

class RoleChecker {

	protected $auth;

	/**
	 * Create a new filter instance.
	 *
	 * @param  Guard  $auth
	 * @return void
	 */
	public function __construct(Guard $auth)
	{
		$this->auth = $auth;
	}
	/**
	 * Handle an incoming request.
	 *
	 * @param  \Illuminate\Http\Request  $request
	 * @param  \Closure  $next
	 * @return mixed
	 */
	public function handle($request, Closure $next)
	{
        return $next($request);

		if(!Auth::check()){
			return redirect()->guest('auth/login');
		}
		if(Auth::user()->hasRole('admin'))
			return $next($request);
		if(!\App\Entities\Permission::where('route',$request->route()->getActionName())->exists()){
			return response('Unauthorized.', 401);
		}
		if($request->route()->getActionName() === 'Closure'){
            return response('Unauthorized.', 401);
        }
        if(\App\Entities\Permission::where('route',$request->route()->getActionName())->first()->roles()->whereIn('id',[3])->exists()){
            return $next($request);
        }
		if(\App\Entities\Permission::where('route',$request->route()->getActionName())->first()->roles()->whereIn('id',Auth::user()->roles()->pluck('id'))->exists()){
            return $next($request);
        }
        return response('Unauthorized.', 401);
	}
}