authService = $authService;
$this->wechatService = $wechatService;
}
public function loginByAccount(Request $request)
{
//基础信息的检查
$rules = [
'account' => 'required',
'password' => 'required',
];
$messages = [
'account.required' => '请输入用户名',
'password.required' => '请输入密码',
];
$create_data = $request->all();
$validator = Validator::make($create_data, $rules, $messages);
if ($validator->fails()) {
$msg = $validator->errors()->all();
return response()->json(['status' => 0, 'msg' => $msg[0]]);
} else {
if (!$member = $this->authService->loginByAccount($request->account, $request->password, $request->autoLogin)) {
return $this->sendErrorResponse("账号或密码错误", []);
}
if ($member->status == 0) {
Auth::guard('api-member')->logout();
return $this->sendErrorResponse("你的账号处于封禁状态, 请联系管理员");
}
return response()->json([
'message' => 'Successfully created user!',
], 201);
}
}
/**
* 微信登录中转
* $state 自定义参数
* $url 回调地地
*/
public function wechatAuth(Request $request)
{
//获取参数
$app_id = subsite_config('aix.system.oauth.wechat_official.app_id');
$redirect_uri = urlencode(route('api.auth.wechat_auth_back'));
$url = $request->input('url', '');
if (empty($url)) {
return response()->json(['status' => 0, 'msg' => '请调写回调地址']);
}
$state = $request->input('state', '');
//存参数
$auth = WechatAuth::create(['url'=>$url,'state'=>$state]);
//微信授权
$wechat_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$app_id}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_userinfo&state={$auth['id']}#wechat_redirect";
return redirect($wechat_url);
}
/**
* 微信回调
*/
public function wechatAuthBack(Request $request)
{
//微信登录
$officialAccount = $this->wechatService->getOfficialAccount();
$wechatUser = $officialAccount->oauth->user()->getOriginal();
//回调
$id = $request->input('state');
$auth = WechatAuth::where('id',$id)->first();
$wechatUser['state'] = $auth['state'];
unset($wechatUser['privilege']);
//循环拼接表单项
$formItemString = '' ;
foreach ( $wechatUser as $key => $value ){
$formItemString .= "" ;
}
//构造表单并跳转
$content =<<
{ $formItemString }
EOF;
exit ( $content );
}
public function test(Request $request)
{
dd($request->post());
}
}