Browse Source

中间件异常输出

master
李可松 4 years ago
parent
commit
d81f190cb1
  1. 50
      app/Http/Middleware/WechatAuth.php

50
app/Http/Middleware/WechatAuth.php

@ -20,33 +20,37 @@ class WechatAuth
*/
public function handle(Request $request, Closure $next)
{
$sessionKey = 'wechat_user';
$user = $request->session()->get($sessionKey);
if (!$user) {
$config = config('wechat.official_account.default');
$app = Factory::officialAccount($config);
try {
$sessionKey = 'wechat_user';
$user = $request->session()->get($sessionKey);
if (!$user) {
$config = config('wechat.official_account.default');
$app = Factory::officialAccount($config);
$code = $request->input('code');
if (empty($code)) {
return $app->oauth->scopes(['snsapi_userinfo'])->redirect($request->url());
} else {
$wechatUser = $app->oauth->user();
if (!$wechatUser) {
throw new \Exception('获取用户信息失败');
} else if (empty($user->unionid)) {
# TODO 调试unionid
if (config('app.debug') && $request->server('REMOTE_ADDR') == '127.0.0.1') {
$wechatUser['unionid'] = 'onhl355f-ofX5e0-4I4vn0bswVPM';
} else
throw new Exception('获取UnionId失败');
$code = $request->input('code');
if (empty($code)) {
return $app->oauth->scopes(['snsapi_userinfo'])->redirect($request->url());
} else {
$wechatUser = $app->oauth->user();
if (empty($wechatUser['id'])) {
throw new \Exception('获取用户信息失败');
} else if (empty($user['unionid'])) {
# TODO 调试unionid
if (config('app.debug') && $request->server('REMOTE_ADDR') == '127.0.0.1') {
$wechatUser['unionid'] = 'onhl355f-ofX5e0-4I4vn0bswVPM';
} else
throw new Exception('获取UnionId失败');
}
}
}
$user = User::where('unionid', $wechatUser->unionid)->first();
if (!$user) {
throw new Exception('您的账号未在小程序上登录过,获取用户信息失败');
$user = User::where('unionid', $wechatUser->unionid)->first();
if (!$user) {
throw new Exception('您的账号未在小程序上登录过,获取用户信息失败');
}
$request->session()->put($sessionKey, $user);
}
$request->session()->put($sessionKey, $user);
} catch (\Exception $exception) {
return response($exception->getMessage());
}
return $next($request);
}

Loading…
Cancel
Save