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

accesstoken.go 1.2 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package accesstoken
  2. import (
  3. "context"
  4. "gitlink.org.cn/cloudream/common/consts/errorcode"
  5. stgglb "gitlink.org.cn/cloudream/jcs-pub/common/globals"
  6. "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/accesstoken"
  7. corrpc "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/rpc/coordinator"
  8. cortypes "gitlink.org.cn/cloudream/jcs-pub/coordinator/types"
  9. )
  10. type ExitEvent = accesstoken.ExitEvent
  11. type CacheKey = accesstoken.CacheKey
  12. type Cache struct {
  13. localHubID cortypes.HubID
  14. *accesstoken.Cache
  15. }
  16. func New(localHubID cortypes.HubID) *Cache {
  17. c := &Cache{
  18. localHubID: localHubID,
  19. }
  20. c.Cache = accesstoken.New(c.load)
  21. return c
  22. }
  23. func (c *Cache) load(key accesstoken.CacheKey) (cortypes.UserAccessToken, error) {
  24. corCli := stgglb.CoordinatorRPCPool.Get()
  25. defer corCli.Release()
  26. tokenResp, cerr := corCli.HubLoadAccessToken(context.Background(), &corrpc.HubLoadAccessToken{
  27. UserID: key.UserID,
  28. TokenID: key.TokenID,
  29. HubID: c.localHubID,
  30. })
  31. if cerr != nil {
  32. if cerr.Code == errorcode.DataNotFound {
  33. return cortypes.UserAccessToken{}, accesstoken.ErrTokenNotFound
  34. }
  35. return cortypes.UserAccessToken{}, cerr.ToError()
  36. }
  37. return tokenResp.Token, nil
  38. }

本项目旨在将云际存储公共基础设施化,使个人及企业可低门槛使用高效的云际存储服务(安装开箱即用云际存储客户端即可,无需关注其他组件的部署),同时支持用户灵活便捷定制云际存储的功能细节。