<?php
namespace App\Services\Statistics\Auth;

/*use App\Models\StatisticsUser;*/
use Encore\Admin\Auth\Database\Administrator;
use Illuminate\Contracts\Auth\Authenticatable;
use App\Repositories\Statistics\StatisticsUserRepository;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Hash;
use App\Models\Admin\SubsiteAdminUser;

class AuthService
{
    /**
     * AuthService constructor.
     */
    protected $statisticsUserRepository;
    protected $administrator;


    public function __construct(StatisticsUserRepository $statisticsUserRepository, Administrator $administrator)
    {
        $this->statisticsUserRepository = $statisticsUserRepository;
        $this->administrator = $administrator;
    }
    public function loginByAccount($account, $password = '', $isAutoLogin = 0)
    {
        $user=$this->checkUser($account, $password);
        if (!$user) {
            return false;
        }
        $this->login($user, $isAutoLogin);
        return $user;
    }
    public function checkUser($username, $password)
    {
        $user=$this->administrator->where(['username'=>$username])->first();

        if (!$user) {
            return false;
        }
        if ($password && !Hash::check($password, $user->password)) {
            return false;
        }

        return $user;
    }

    public function login($user, $isAutoLogin = 0)
    {
        $isAutoLogin=$isAutoLogin?true:false;
        if ($user instanceof Administrator) {
            Auth::guard('admin')->login($user, $isAutoLogin);
        }
    }

    public function logout()
    {
        Auth::guard('admin')->logout();
    }

    public function getUserRelativeSubsites($user)
    {
        $where = ['admin_user_id'=>$user->id];
        return SubsiteAdminUser::where($where)->pluck('subsite_id')->toArray();
    }

}