12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- <?php
- namespace App\Http\Middleware;
- use App\Client\SiteUser;
- use Closure;
- use EasyWeChat\Foundation\Application;
- use Cookie;
- class CrmUser
- {
- /**
- * Handle an incoming request.
- *
- * @param \Illuminate\Http\Request $request
- * @param \Closure $next
- * @return mixed
- */
- public function handle($request, Closure $next)
- {
- $uid = Cookie::get('crm_user_id');
- if ($uid) {
- $channel_id = Cookie::get('crm_channel_id');
- $this->setUserGlobal($uid, $channel_id);
- } else {
- $openid = $request->get('openid');
- $params = $request->except('_url');
- if (empty($openid)) {
- $url = url()->current() . '?' . http_build_query($params);
- $params['redirect_url'] = urlencode($url);
- $app = new Application($this->auth($params));
- return $app->oauth->redirect();
- } else {
- $site_user = new SiteUser($openid);
- $user = $site_user->getChannelUser();
- Cookie::queue('crm_user_id', $user[0], env('U_COOKIE_EXPIRE'));
- Cookie::queue('crm_channel_id', $user[1], env('U_COOKIE_EXPIRE'));
- $this->setUserGlobal($user[0], $user[1]);
- }
- }
- return $next($request);
- }
- private function setUserGlobal($uid, $channel_id)
- {
- $user = app()->make('user');
- $user->id = $uid;
- $user->channel_id = $channel_id;
- }
- private function auth($param)
- {
- $param['appid'] = 'wx9d389a73b88bbeae';
- $options = [
- 'app_id' => 'wx9d389a73b88bbeae',
- 'secret' => '2f6594bb595dfa256b5512e43a32a3d3',
- 'oauth' => [
- 'scopes' => ['snsapi_base'],
- 'callback' => env('AUTH_CALLBACK_URL') . '?' . http_build_query($param),
- ],
- ];
- return $options;
- }
- }
|