<?php

namespace App\Http\Controllers\Admin;

use App\User;
use Illuminate\Http\Request;
//Check the request is valid
use App\Http\Requests\LoginRequest;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Session;


class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your Admin screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    // use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = RouteServiceProvider::ADMIN;

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        // $this->middleware('guest')->except('logout');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\Support\Renderable
     */
    public function index()
    {
        return view('admin.login');
    }

    /**
     * Function for Admin login to the cms
     *
     * @param  LoginRequest $request
     * @return Response
     */
    public function authenticate(LoginRequest $request)
    {

        $credentials = $request->only('email', 'password');

        if (Auth::attempt($credentials, $request->remember)) {

            /**
             * Check if the dashboard is disabled
             * for other administrators, other than the super admin
             */

            if (Auth::user()->role != 'super_admin'){
                if (settings('dashboard_disable') == 1){
                    Auth::logout();
                    return redirect('dashboard/login')->with('error', __('dashboard.failed'));
                }
            }

            // Authentication passed...
            return redirect('/dashboard');
        }

        return redirect('/dashboard/login')->withInput()->with('error', __('auth.failed'));
    }


    public function logout()
    {
        Session::flush();
        Auth::logout();
        return redirect('/dashboard/login');
    }
}
