<?php

namespace Modules\User\Controllers\Employee;

use Illuminate\Http\RedirectResponse;
//Check the request is valid
use App\Http\Requests\Admin\LoginRequest;
use App\Http\Controllers\Controller;
use Illuminate\Routing\Redirector;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
use Illuminate\View\View;
use Modules\User\Enums\UserRoleEnum;


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

    // use AuthenticatesUsers;

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

    /**
     * Show the application dashboard.
     * @return View
     */
    public function index()
    {
        return view('employee.login');
    }

    /**
     * Function for Web login to the cms
     * @param LoginRequest $request
     * @return RedirectResponse|Redirector
     */
    public function authenticate(LoginRequest $request) :RedirectResponse
    {
        $credentials = $request->only('email', 'password');
        if (Auth::attempt($credentials, $request->remember)) {
            if (!in_array(Auth::user()->role , UserRoleEnum::employees()))
            {
                return redirect('/admin/login')->withInput()->with('error', __('auth.failed'));
            }
            /**
             * Check if the dashboard is disabled
             * for other administrators, other than the super admin
             */

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

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


    /**
     * Web logout
     * @return RedirectResponse|Redirector
     */
    public function logout() :RedirectResponse
    {
        Session::flush();
        Auth::logout();
        return redirect('/admin/login');
    }
}
