Class: ShopifyApp::SessionRepository

Inherits:
Object
  • Object
show all
Extended by:
ShopifyAPI::Auth::SessionStorage
Defined in:
lib/shopify_app/session/session_repository.rb

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.shop_storageObject



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

def shop_storage
  load_shop_storage || raise(::ShopifyApp::ConfigurationError,
    "ShopifySessionRepository.shop_storage is not configured!")
end

.user_storageObject



41
42
43
# File 'lib/shopify_app/session/session_repository.rb', line 41

def user_storage
  load_user_storage
end

Class Method Details

.delete_session(id) ⇒ Object

ShopifyAPI::Auth::SessionStorage override



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/shopify_app/session/session_repository.rb', line 72

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

  record = if match
    domain = match[1]
    ShopifyApp::Logger.debug("Destroying session by domain - domain: #{domain}")
    Shop.find_by(shopify_domain: match[1])
  else
    shopify_user_id = id.split("_").last
    ShopifyApp::Logger.debug("Destroying session by user - user_id: #{shopify_user_id}")
    User.find_by(shopify_user_id: shopify_user_id)
  end

  record.destroy

  true
end

.load_session(id) ⇒ Object

ShopifyAPI::Auth::SessionStorage override



58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/shopify_app/session/session_repository.rb', line 58

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



12
13
14
# File 'lib/shopify_app/session/session_repository.rb', line 12

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

.retrieve_shop_session_by_shopify_domain(shopify_domain) ⇒ Object



20
21
22
# File 'lib/shopify_app/session/session_repository.rb', line 20

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

.retrieve_user_session(id) ⇒ Object



16
17
18
# File 'lib/shopify_app/session/session_repository.rb', line 16

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

.retrieve_user_session_by_shopify_user_id(user_id) ⇒ Object



24
25
26
# File 'lib/shopify_app/session/session_repository.rb', line 24

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



46
47
48
49
50
51
52
53
54
55
# File 'lib/shopify_app/session/session_repository.rb', line 46

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



28
29
30
# File 'lib/shopify_app/session/session_repository.rb', line 28

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

.store_user_session(session, user) ⇒ Object



32
33
34
# File 'lib/shopify_app/session/session_repository.rb', line 32

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