| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- <?php
- namespace App\Module\AppGame\Middleware;
- use App\Module\AppGame\Handler\BaseHandler;
- use App\Module\AppGame\SessionApp;
- use App\Module\AppGame\Tools\Protobuf;
- use Closure;
- use Illuminate\Http\Request;
- use UCore\Helper\Logger;
- use Uraus\Kku\Common\RESPONSE_CODE;
- use Uraus\Kku\Response;
- class LoginCheck
- {
- /**
- * Handle an incoming request.
- *
- * @param \Illuminate\Http\Request $request
- * @param \Closure $next
- * @return mixed
- */
- public function handle(Request $request, Closure $next)
- {
- // return $next($request);
- // 获取当前请求的Handler类
- /**
- * @var BaseHandler $handler
- */
- $handler = $request->attributes->get('_handler');
- $need_login = false;
- if ($handler && method_exists($handler, 'needLogin') && $handler->needLogin()) {
- // 检查是否已登录
- $need_login = true;
- }
- $login_ok = false;
- // 需要登陆,进行登陆判断
- $token = $request->header('token', '');
- Logger::debug('LoginCheck:' . $token . $need_login);
- // dump($token);
- if (get_class($handler) == 'App\Module\AppGame\Handler\Public\TokenUsefulHandler') {
- SessionApp::$session_id = $token;
- return $next($request);
- }
- if (get_class($handler) == 'App\Module\AppGame\Handler\Public\TokenHandler') {
- SessionApp::$session_id = SessionApp::genSessionID();
- return $next($request);
- }
- if (empty($token)) {
- // token 不合法
- $response = new Response();
- $response->setCode(RESPONSE_CODE::REQUEST_ERROR);
- $response->setMsg('请求错误-Token is import!');
- return \App\Module\AppGame\Tools\Protobuf::response($response);
- } else {
- // token 不为空
- if (!SessionApp::checktoken($token)) {
- // token 不合法
- $response = new Response();
- $response->setCode(RESPONSE_CODE::REQUEST_ERROR);
- $response->setMsg('请求错误-Token');
- return Protobuf::response($response);
- }
- SessionApp::$session_id = $token;
- // 登陆判断
- $uid = \App\Module\AppGame\SessionApp::getUserId();
- // dump($uid);
- if ($uid > 0) {
- $handler->user_id = $uid;
- $login_ok = true;
- }
- }
- if ($need_login && !$login_ok) {
- $response = new Response();
- $response->setCode(RESPONSE_CODE::NOT_LOGIN);
- $response->setMsg('用户未登录');
- return Protobuf::response($response);
- }
- return $next($request);
- }
- }
|