<?php
namespace app\controller\manager;

use app\model\{Member, AuthRule, LoginLog};
use app\controller\BaseController;

class Login extends BaseController
{
    /**
     * user lgoin
     * use ajax post push
     *
     * @return void | JSON
     */
    public function index()
    {
        if(request()->isPost()){
            $username = trim(input('param.username'));
            $password = trim(input('param.password'));
            $loginUrl = url('manager.login/index');

            $captcha  = trim(input('param.captcha', ''));
            if (!captcha_check($captcha)) {
                session('loginError','验证码错误');
                return $this->redirect($loginUrl);
            }

            if(empty($username) || empty($password)){
                session('loginError','用户名和密码不能为空');
                return $this->redirect($loginUrl);
            }

            $member = Member::getByUserName($username);
            if(empty($member)){
                session('loginError','用户名错误');
                return $this->redirect($loginUrl);
            }
            if($member['password'] != md5($password)){
                session('loginError','用户密码错误');
                return $this->redirect($loginUrl);

            }
            $rulesList = AuthRule::userRolesList($member['group_id']);
            $rulesIdStr = '';
            if (!empty($rulesList)) {
                $rulesId = $rulesList['allRulesId'];
                $rulesIdStr = implode(',', $rulesId);
            }

            $authSession = [
                'userId' => $member['id'],
                'userName' => $member['username'],
                'groupId' => $member['group_id'],
                'rules' => $rulesIdStr,
                'cates' => $member['cates']
            ];

            //记录最后登陆时间
            $ip = request()->ip();
            $time = time();
            Member::updateById($member['id'], [
                'login_time' => $time,
                'login_ip' => $ip
            ]);
            LoginLog::create([
                'member_id' => $member['id'],
                'name' => $member['username'],
                'ip' => $ip,
                'create_time' => $time
            ]);
            session('auth', $authSession);
            return redirect(url('manager.index/index'));
        }

        $viewData = [];
        if(session('?loginError')) {
            $viewData['error'] = session('loginError');
        }
        session('loginError', null);
        return view()->assign($viewData);
    }
}