示例#1
0
 /**
  * 存储新用户的个人信息
  *
  * @param Weixin_User $user
  * @param array       $weixin
  * @return Weixin_User
  */
 public static function storeNewUserInfo(Weixin_User $user, array $weixin)
 {
     /*
      * openid, avatar, nickname
      *
      */
     $user->user_openid = $weixin['id'];
     $user->user_nickname = $weixin['name'];
     $user->user_avatar = $weixin['avatar'];
     $status = $user->save();
     if (true === $status) {
         return $user;
     }
 }
示例#2
0
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     $weixin = $request->session()->get('wechat.oauth_user');
     // 不接受无信用的凭证
     if (empty($weixin['id']) || strlen($weixin['id']) !== 28) {
         return abort(405);
     }
     // 生成一个随机的userKEY用于会话验证
     // 将该session的过期时间设置为比access_token
     // 的refresh时长多10s,一旦access_token刷新,
     // userKEY的值会重新计算并存储
     $token = $weixin['token'];
     $refresh = $token['refresh_token'];
     $expires = $token['expires_in'];
     // 假设用户数据已经存在于数据库中
     $user = Weixin_User::getFullyUserInfoWithOpenID($token['openid']);
     if (empty($user)) {
         $user = Weixin_User::storeNewUserInfo(new Weixin_User(), $weixin->toArray());
     }
     $user_id = $user->user_id;
     $key = 'jk_session:' . $user_id . ':userKEY';
     // 存储当前会话消息
     $request->session()->put('jukebox_user', $user_id);
     // 计算并存储userKEY
     if (!\PRedis::command('get', [$key])) {
         \PRedis::command('setex', [$key, intval($expires) + 10, str_limit($refresh, 5) . str_random(1)]);
     }
     return $next($request);
 }
示例#3
0
 /**
  * 用户希望点击当前歌曲
  *
  * @param Requests\MusicRequest|Request $request
  * @return string
  */
 public function wish(Requests\MusicRequest $request)
 {
     $data = ['flag' => $request->json('flag'), 'user' => $request->session()->pull('jukebox_user')];
     // 根据用户的匿名状态获取对应的用户信息
     $wish = Weixin_User::getShortlyUserInfoByUser($this->isAnonymity($data));
     return $this->promiseUserWish($request, $wish);
 }
示例#4
0
 /**
  * 获取当前用户的个人信息
  *
  * @param Request           $request
  * @param string|integer    $user_id
  * @return array
  */
 private function obtainCurrentUserInfo($request, $user_id)
 {
     return valueOrFail(\App\Weixin_User::getFullyUserInfo($user_id));
 }