You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ClientMiddleware.php 1.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. namespace app\http\middleware\api;
  3. use app\Request;
  4. use app\services\user\UserAuthServices;
  5. use crmeb\interfaces\MiddlewareInterface;
  6. /**
  7. * 客户身份验证中间件
  8. * Class ClientMiddleware
  9. * @package app\http\middleware\api
  10. */
  11. class ClientMiddleware implements MiddlewareInterface
  12. {
  13. public function handle(Request $request, \Closure $next)
  14. {
  15. $userId = trim(ltrim($request->param('userid')));
  16. if (!$userId) {
  17. return app('json')->fail('缺少Userid');
  18. }
  19. try {
  20. /** @var UserAuthServices $service */
  21. $service = app()->make(UserAuthServices::class);
  22. $authInfo = $service->parseClient($userId);
  23. } catch (\Throwable $e) {
  24. return app('json')->fail($e->getMessage());
  25. }
  26. $request->macro('clientInfo', function (string $key = null) use ($authInfo) {
  27. if ($key) {
  28. return $authInfo[$key] ?? null;
  29. } else {
  30. return $authInfo;
  31. }
  32. });
  33. $request->macro('userid', function () use ($userId) {
  34. return $userId;
  35. });
  36. return $next($request);
  37. }
  38. }