Browse Source

混合登录

master
wanghongjun 2 years ago
parent
commit
b03cbda258
  1. 69
      app/controller/Passport.php

69
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);
}
}
}
Loading…
Cancel
Save