Class: ShopifyAPI::Utils::SessionUtils

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/shopify_api/utils/session_utils.rb

Class Method Summary collapse

Class Method Details



69
70
71
# File 'lib/shopify_api/utils/session_utils.rb', line 69

def cookie_session_id(cookies)
  cookies[Auth::Oauth::SessionCookie::SESSION_COOKIE_NAME]
end

.current_session_id(shopify_id_token, cookies, online) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/shopify_api/utils/session_utils.rb', line 19

def current_session_id(shopify_id_token, cookies, online)
  if Context.embedded?
    if shopify_id_token
      id_token = shopify_id_token.gsub("Bearer ", "")
      session_id_from_shopify_id_token(id_token: id_token, online: online)
    else
      # falling back to session cookie
      raise Errors::CookieNotFoundError, "JWT token or Session cookie not found for app" unless
        cookies && cookies[Auth::Oauth::SessionCookie::SESSION_COOKIE_NAME]

      cookie_session_id(cookies)
    end
  else
    raise Errors::CookieNotFoundError, "Session cookie not found for app" unless
      cookies && cookies[Auth::Oauth::SessionCookie::SESSION_COOKIE_NAME]

    cookie_session_id(cookies)
  end
end

.jwt_session_id(shop, user_id) ⇒ Object



59
60
61
# File 'lib/shopify_api/utils/session_utils.rb', line 59

def jwt_session_id(shop, user_id)
  "#{shop}_#{user_id}"
end

.offline_session_id(shop) ⇒ Object



64
65
66
# File 'lib/shopify_api/utils/session_utils.rb', line 64

def offline_session_id(shop)
  "offline_#{shop}"
end

.session_id_from_shopify_id_token(id_token:, online:) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/shopify_api/utils/session_utils.rb', line 45

def session_id_from_shopify_id_token(id_token:, online:)
  raise Errors::MissingJwtTokenError, "Missing Shopify ID Token" if id_token.nil? || id_token.empty?

  payload = Auth::JwtPayload.new(id_token)
  shop = payload.shop

  if online
    jwt_session_id(shop, payload.sub)
  else
    offline_session_id(shop)
  end
end