mutationCustomerAccessTokenRenew.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package graphql
  2. import (
  3. "context"
  4. "github.com/gshopify/service-wrapper/auth"
  5. "github.com/gshopify/service-wrapper/scalar"
  6. "gshopper.com/gshopify/customer/graphql/generated"
  7. )
  8. func (r *mutationResolver) CustomerAccessTokenRenew(ctx context.Context, t string) (*generated.CustomerAccessTokenRenewPayload, error) {
  9. var (
  10. response = &generated.CustomerAccessTokenRenewPayload{}
  11. session = auth.SessionManager()
  12. sessionId string
  13. err error
  14. )
  15. _, sessionId, err = r.decodeAccessToken(ctx, t)
  16. if err != nil {
  17. response.UserErrors = append(response.UserErrors, ErrTokenNotExists)
  18. return response, nil
  19. }
  20. refresh, err := session.Token(ctx, sessionId)
  21. if err != nil {
  22. response.UserErrors = append(response.UserErrors, ErrToken(err.Error()))
  23. return response, nil
  24. }
  25. token, err := r.client.RefreshToken(ctx, refresh, r.conf.Cli.ClientId, r.conf.Cli.ClientSecret, r.conf.Cli.Realm)
  26. if err != nil {
  27. response.UserErrors = append(response.UserErrors, ErrTokenExpired)
  28. return response, nil
  29. }
  30. if err = r.saveSession(ctx, token); err != nil {
  31. response.UserErrors = append(response.UserErrors, ErrToken(err.Error()))
  32. return response, nil
  33. }
  34. response.CustomerAccessToken = &generated.CustomerAccessToken{
  35. AccessToken: token.AccessToken,
  36. ExpiresAt: scalar.NewDateTimeIn(token.RefreshExpiresIn),
  37. }
  38. return response, nil
  39. }