diff --git a/app/controller/Passport.php b/app/controller/Passport.php index a3ae991..6963c10 100644 --- a/app/controller/Passport.php +++ b/app/controller/Passport.php @@ -308,4 +308,73 @@ class Passport extends BaseController return $this->renderError($exception->getMessage(),$data); } } + + + public function mixedLogin() + { + + $param = Request::param(); + + $count = 0; + $defaultCount = 3;# 默认登陆三次提示验证码 + $cookie_name = 'login_count'.$_SERVER['HTTP_HOST']; + + try { + + $InitData = new InitData(); + $InitData->init(); + + // 验证用户输入 + validate()->rule([ + 'account_number|账号或手机号' => 'require|min:4|max:16', + 'password|密码' => 'require|min:6|max:20', + ])->scene('adminLogin')->check($param); + + # 验证码验证 + if ($count = Cookie::get($cookie_name) ?: 0) { + Cookie::set($cookie_name,$count+1); + } else { + Cookie::set($cookie_name,1); + } + if ($count > $defaultCount) { + $this->validate($param,['captcha|验证码'=>'require|captcha']); + } + + # 登录 + $data = $param; + $data['phone'] = $param['account_number']; + $userModel = new UserModel(); + $user = $userModel->login($data); + if ($user['status']) { + $userinfo = ['id' => $user['data']['id'], 'avatar' => get_image_url($user['data']['avatar']), 'time' => time()]; + $token = ['token'=>signToken($userinfo),'type' => 3]; + Cookie::delete($cookie_name); + return $this->renderSuccess('登陆成功',$token); + } + // 管理员登陆 + $adminUser = AdminUser::login($param); + if ($adminUser['status']) { + $userinfo = ['id' => $adminUser['data']['id'], 'avatar' => get_image_url($adminUser['data']['avatar']), 'time' => time()]; + $token = ['token'=>signToken($userinfo),'type' => 2]; + Cookie::delete($cookie_name); + return $this->renderSuccess('登陆成功',$token); + } + // 代理登陆 + $agentUser = AgentUser::login($data); + if ($agentUser['status']) { + $userinfo = ['id' => $agentUser['data']['id'], 'avatar' => get_image_url($agentUser['data']['avatar']), 'time' => time()]; + $token = ['token'=>signToken($userinfo),'type' => 1]; + Cookie::delete($cookie_name); + return $this->renderSuccess('登陆成功',$token); + } + + throw new ValidateException('账号或密码,不正确'); + } catch (ValidateException $validateException) { + + $data = ['captcha_img' => '']; + if ($count >= $defaultCount) $data['captcha_img'] = captcha_src(); + return $this->renderError($validateException->getMessage(),$data); + } + } + } \ No newline at end of file