<?php namespace App\Http\Filters;

use Illuminate\Http\Request;
use Illuminate\Routing\Route;
use Illuminate\Contracts\Auth\Authenticator;
use Illuminate\Contracts\Routing\ResponseFactory;

class AuthFilter {

    /**
     * The authenticator implementation.
     *
     * @var Authenticator
     */
    protected $auth;

    /**
     * The response factory implementation.
     *
     * @var ResponseFactory
     */
    protected $response;

    /**
     * Create a new filter instance.
     *
     * @param  Authenticator  $auth
     * @param  ResponseFactory  $response
     * @return void
     */
    public function __construct(Authenticator $auth,
                                ResponseFactory $response)
    {
        $this->auth = $auth;
        $this->response = $response;
    }

    /**
     * Run the request filter.
     *
     * @param  \Illuminate\Routing\Route  $route
     * @param  \Illuminate\Http\Request  $request
     * @return mixed
     */
    public function filter(Route $route, Request $request)
    {
        if ($this->auth->guest())
        {
            if ($request->ajax())
            {
                return $this->response->make('Unauthorized', 401);
            }
            else
            {
                return $this->response->redirectGuest('auth/login');
            }
        }
    }

}