Class: ShopifyApp::SessionRepository

Inherits:
Object
  • Object
show all
Defined in:
lib/shopify_app/session/session_repository.rb

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.shop_storageObject



42
43
44
45
46
47
48
# File 'lib/shopify_app/session/session_repository.rb', line 42

def shop_storage
  load_shop_storage || raise(
    ::ShopifyApp::ConfigurationError,
    "ShopifyApp::Configuration.shop_session_repository is not configured!\n
    See docs here: https://github.com/Shopify/shopify_app/blob/main/docs/shopify_app/sessions.md#sessions",
  )
end

.user_storageObject



50
51
52
# File 'lib/shopify_app/session/session_repository.rb', line 50

def user_storage
  load_user_storage
end

Class Method Details

.delete_session(id) ⇒ Object

ShopifyAPI::Auth::SessionStorage override



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/shopify_app/session/session_repository.rb', line 81

def delete_session(id)
  match = id.match(/^offline_(.*)/)

  if match
    domain = match[1]
    ShopifyApp::Logger.debug("Destroying session by domain - domain: #{domain}")
    destroy_shop_session_by_domain(domain)

  else
    shopify_user_id = id.split("_").last
    ShopifyApp::Logger.debug("Destroying session by user - user_id: #{shopify_user_id}")
    destroy_user_session_by_shopify_user_id(shopify_user_id)
  end

  true
end

.destroy_shop_session_by_domain(shopify_domain) ⇒ Object



26
27
28
# File 'lib/shopify_app/session/session_repository.rb', line 26

def destroy_shop_session_by_domain(shopify_domain)
  shop_storage.destroy_by_shopify_domain(shopify_domain)
end

.destroy_user_session_by_shopify_user_id(user_id) ⇒ Object



30
31
32
# File 'lib/shopify_app/session/session_repository.rb', line 30

def destroy_user_session_by_shopify_user_id(user_id)
  user_storage.destroy_by_shopify_user_id(user_id)
end

.load_session(id) ⇒ Object

ShopifyAPI::Auth::SessionStorage override



67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/shopify_app/session/session_repository.rb', line 67

def load_session(id)
  match = id.match(/^offline_(.*)/)
  if match
    domain = match[1]
    ShopifyApp::Logger.debug("Loading session by domain - domain: #{domain}")
    retrieve_shop_session_by_shopify_domain(domain)
  else
    user = id.split("_").last
    ShopifyApp::Logger.debug("Loading session by user_id - user: #{user}")
    retrieve_user_session_by_shopify_user_id(user)
  end
end

.retrieve_shop_session(id) ⇒ Object



10
11
12
# File 'lib/shopify_app/session/session_repository.rb', line 10

def retrieve_shop_session(id)
  shop_storage.retrieve(id)
end

.retrieve_shop_session_by_shopify_domain(shopify_domain) ⇒ Object



18
19
20
# File 'lib/shopify_app/session/session_repository.rb', line 18

def retrieve_shop_session_by_shopify_domain(shopify_domain)
  shop_storage.retrieve_by_shopify_domain(shopify_domain)
end

.retrieve_user_session(id) ⇒ Object



14
15
16
# File 'lib/shopify_app/session/session_repository.rb', line 14

def retrieve_user_session(id)
  user_storage.retrieve(id)
end

.retrieve_user_session_by_shopify_user_id(user_id) ⇒ Object



22
23
24
# File 'lib/shopify_app/session/session_repository.rb', line 22

def retrieve_user_session_by_shopify_user_id(user_id)
  user_storage.retrieve_by_shopify_user_id(user_id)
end

.store_session(session) ⇒ Object

ShopifyAPI::Auth::SessionStorage override



55
56
57
58
59
60
61
62
63
64
# File 'lib/shopify_app/session/session_repository.rb', line 55

def store_session(session)
  if session.online?
    user = session.associated_user
    ShopifyApp::Logger.debug("Storing online user session - session: #{session.id}")
    user_storage.store(session, user)
  else
    ShopifyApp::Logger.debug("Storing offline store session - session: #{session.id}")
    shop_storage.store(session)
  end
end

.store_shop_session(session) ⇒ Object



34
35
36
# File 'lib/shopify_app/session/session_repository.rb', line 34

def store_shop_session(session)
  shop_storage.store(session)
end

.store_user_session(session, user) ⇒ Object



38
39
40
# File 'lib/shopify_app/session/session_repository.rb', line 38

def store_user_session(session, user)
  user_storage.store(session, user)
end