LoginCheck.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. namespace App\Module\AppGame\Middleware;
  3. use App\Module\AppGame\Handler\BaseHandler;
  4. use App\Module\AppGame\SessionApp;
  5. use App\Module\AppGame\Tools\Protobuf;
  6. use Closure;
  7. use Illuminate\Http\Request;
  8. use Uraus\Kku\Common\RESPONSE_CODE;
  9. use Uraus\Kku\Response;
  10. class LoginCheck
  11. {
  12. /**
  13. * Handle an incoming request.
  14. *
  15. * @param \Illuminate\Http\Request $request
  16. * @param \Closure $next
  17. * @return mixed
  18. */
  19. public function handle(Request $request, Closure $next)
  20. {
  21. // return $next($request);
  22. // 获取当前请求的Handler类
  23. /**
  24. * @var BaseHandler $handler
  25. */
  26. $handler = $request->attributes->get('_handler');
  27. $need_login = false;
  28. if ($handler && method_exists($handler, 'needLogin') && $handler->needLogin()) {
  29. // 检查是否已登录
  30. $need_login = true;
  31. }
  32. $login_ok = false;
  33. // 需要登陆,进行登陆判断
  34. $token = $request->header('token', '');
  35. // dump($token);
  36. if (get_class($handler) == 'App\Module\AppGame\Handler\Public\TokenUsefulHandler') {
  37. SessionApp::$session_id = $token;
  38. return $next($request);
  39. }
  40. if (get_class($handler) == 'App\Module\AppGame\Handler\Public\TokenHandler') {
  41. SessionApp::$session_id = SessionApp::genSessionID();
  42. } else {
  43. if (empty($token)) {
  44. $token = SessionApp::getSessionId();
  45. if (get_class($handler) != 'App\Module\AppGame\Handler\Public\TokenHandler') {
  46. // token 不合法
  47. $response = new Response();
  48. $response->setCode(RESPONSE_CODE::REQUEST_ERROR);
  49. $response->setMsg('请求错误-Token is import!');
  50. return \App\Module\AppGame\Tools\Protobuf::response($response);
  51. }
  52. } else {
  53. // token 不为空
  54. if (!SessionApp::checktoken($token)) {
  55. // token 不合法
  56. $response = new Response();
  57. $response->setCode(RESPONSE_CODE::REQUEST_ERROR);
  58. $response->setMsg('请求错误-Token');
  59. return Protobuf::response($response);
  60. }
  61. SessionApp::$session_id = $token;
  62. // 登陆判断
  63. $uid = \App\Module\AppGame\SessionApp::getUserId();
  64. // dump($uid);
  65. if ($uid > 0) {
  66. $handler->user_id = $uid;
  67. $login_ok = true;
  68. }
  69. }
  70. }
  71. if ($need_login && !$login_ok) {
  72. $response = new Response();
  73. $response->setCode(RESPONSE_CODE::NOT_LOGIN);
  74. $response->setMsg('用户未登录');
  75. return Protobuf::response($response);
  76. }
  77. return $next($request);
  78. }
  79. }