<?php

namespace App\Packages\User\Controllers;

use App\Http\Controllers\Controller;
use App\Packages\User\Models\User;
use App\Packages\User\Models\UserPasswordReset;
use Auth;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\Factory;
use View;

/**
 * Class AuthController
 * @package App\Http\Controllers\User
 */
class AuthController extends Controller
{
	use AuthenticatesUsers;

	/** @var string */
	protected $redirectTo = '/';

	/**
	 * AuthController constructor.
	 */
	public function __construct()
	{
		Auth::shouldUse(User::WEB_GUARD);
		$this->middleware('guest');
	}

	/**
	 * @return Factory|View
	 */
	public function loginForm()
	{
		return view('user.auth.login');
	}

	/**
	 * @return Factory|View
	 */
	public function registerForm()
	{
		return view('user.auth.register');
	}

	/**
	 * @return Factory|View
	 */
	public function forgotForm()
	{
		return view('user.auth.forgot');
	}

	/**
	 * @TODO: Add flash bag
	 *
	 * @param Request $request
	 *
	 * @return RedirectResponse|Factory|View
	 */
	public function resetPasswordForm(Request $request)
	{
		$resetToken = $request->route('token');
		$resetPassword = UserPasswordReset::findByToken($resetToken);

		if (!$resetPassword || $resetPassword->isTokenExpired()) {
			// flash bag +

			// different message for flash bag

			\Redirect::route('front.home');
		}

		return view('user.auth.reset-password', [
			'resetToken' => $resetToken,
		]);
	}
}
