<?php

namespace App\Http\Controllers\Admin;

use App\Http\Models\User;
use App\Http\Models\Permission;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Cookie;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Session;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\Str;

class AuthController extends Controller
{
    public $request;

    public function __construct(Request $request)
    {
        $this->middleware(['logonRedirect'])->only('logon', 'login');
        $this->request = $request;
    }
    //登录入口1
    public function logon(Request $request)
    {

        $requestUrl = $request->getRequestUri();
        if (!$request->ajax()) {
            return view('admin/auth/logon');
        }

        $backUser = User::query()->where(['username' => $this->request->input('username')])->first();
        if (!$backUser || !Hash::check($this->request->input('password'), $backUser->password)) {
            return response()->json(['status' => 400, 'message' => '用户名或密码错误']);
        }
        if (!$backUser->status) {
            return response()->json(['status' => 400, 'message' => '用户已禁用']);
        }
        Auth::loginUsingId($backUser->id);
//        session()->put('entry_page', 'admin/auth/logon');
        session()->put('entry_page', $requestUrl);
        do_log('logon')->use('system_log')->by(Auth::user())->log('安全登录');
        return response()->json(['status' => 200])->withCookie('entry_page', $requestUrl);
    }
    //登出
    public function logoff(Request $request)
    {
        do_log('logoff')->use('system_log')->by(Auth::user())->log('安全退出');
        $entryPage = session('entry_page') ?? $request->input('entry_page') ?? 'admin/auth/logon';
        Auth::logout();
        Session::flush();
        \cookie()->forget('laravel_session');
        return redirect($entryPage);
    }

    //登录入口2
    public function login(Request $request)
    {
        $from = Route::currentRouteName();

        if (!$request->ajax()) {
            return view('admin/auth/login', [
                'from' => $from
            ]);
        }
        $backUser = User::query()->where(['username' => $this->request->input('username')])->first();
        if (!$backUser || !Hash::check($this->request->input('password'), $backUser->password)) {
            return response()->json(['status' => 400, 'message' => '用户名或密码错误']);
        }
        if (!$backUser->status) {
            return response()->json(['status' => 400, 'message' => '用户已禁用']);
        }

        Auth::loginUsingId($backUser->id);
        $requestUrl = sprintf('/%s', $from);
        session()->put('entry_page', $requestUrl);

        do_log('logon')->use('system_log')->by(Auth::user())->log('安全登录');
        return response()->json(['status' => 200])->withCookie('entry_page', $requestUrl);
    }
}