AccessToken.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4. * This file is part of Hyperf.
  5. *
  6. * @link https://www.hyperf.io
  7. * @document https://hyperf.wiki
  8. * @contact group@hyperf.io
  9. * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
  10. */
  11. namespace Hyperf\Nacos\Provider;
  12. trait AccessToken
  13. {
  14. private ?string $accessToken = null;
  15. private int $expireTime = 0;
  16. public function getAccessToken(): ?string
  17. {
  18. $username = $this->config->getUsername();
  19. $password = $this->config->getPassword();
  20. if ($username === null || $password === null) {
  21. return null;
  22. }
  23. if (! $this->isExpired()) {
  24. return $this->accessToken;
  25. }
  26. $result = $this->handleResponse(
  27. $this->app->auth->login($username, $password)
  28. );
  29. $this->accessToken = $result['accessToken'];
  30. $this->expireTime = $result['tokenTtl'] + time();
  31. return $this->accessToken;
  32. }
  33. protected function isExpired(): bool
  34. {
  35. if (isset($this->accessToken) && $this->expireTime > time() + 60) {
  36. return false;
  37. }
  38. return true;
  39. }
  40. }