<?php

namespace App\PackagesAdmin\Manager\Controllers;

use App\Http\Controllers\Controller;
use App\PackagesAdmin\Manager\Models\Manager;
use Auth;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;

/**
 * Class AuthActionController
 * @package App\PackagesAdmin\Manager\Controllers
 */
class AuthActionController extends Controller
{
	use AuthenticatesUsers;

	protected $redirectTo = '/';

	/**
	 * AuthController constructor.
	 */
	public function __construct()
	{
		Auth::shouldUse(Manager::WEB_GUARD);
		$this->middleware('guest_admin')
			->except(['logout']);
	}

	/**
	 * @param Request $request
	 *
	 * @return mixed
	 */
	public function login(Request $request)
	{
		$this->validateLogin($request);
		if ($this->hasTooManyLoginAttempts($request)) {
			$this->fireLockoutEvent($request);

			return $this->sendLockoutResponse($request);
		}

		if ($this->attemptLogin($request)) {
			return $this->sendLoginResponse($request);
		}

		$this->incrementLoginAttempts($request);

		return $this->sendFailedLoginResponse($request);
	}

	/**
	 * @param Request $request
	 *
	 * @return RedirectResponse
	 */
	public function logout(Request $request)
	{
		$this->guard()->logout();
		$request->session()->invalidate();

		return \Redirect::route('admin.home');
	}
}
