WorkermanHandle.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. namespace crmeb\services\workerman;
  3. use crmeb\exceptions\AuthException;
  4. use crmeb\repositories\AdminRepository;
  5. use Workerman\Connection\TcpConnection;
  6. class WorkermanHandle
  7. {
  8. protected $service;
  9. public function __construct(WorkermanService &$service)
  10. {
  11. $this->service = &$service;
  12. }
  13. public function login(TcpConnection &$connection, array $res, Response $response)
  14. {
  15. if (!isset($res['data']) || !$token = $res['data']) {
  16. return $response->close([
  17. 'msg' => '授权失败!'
  18. ]);
  19. }
  20. try {
  21. $authInfo = AdminRepository::adminParseToken($token);
  22. } catch (AuthException $e) {
  23. return $response->close([
  24. 'msg' => $e->getMessage(),
  25. 'code' => $e->getCode()
  26. ]);
  27. }
  28. if (!$authInfo || !isset($authInfo['id'])) {
  29. return $response->close([
  30. 'msg' => '授权失败!'
  31. ]);
  32. }
  33. $connection->adminInfo = $authInfo;
  34. $connection->adminId = $authInfo['id'];
  35. $this->service->setUser($connection);
  36. return $response->success();
  37. }
  38. }