Skip to content

Latest commit

 

History

History
46 lines (33 loc) · 2 KB

session_storage.md

File metadata and controls

46 lines (33 loc) · 2 KB

Create a Session Storage Implementation

The implementation of session storage that you pass in ShopifyAPI::Context.setup is what the Shopify gem will use to store and load sessions. Shopify::Auth::FileSessionStorage can be used for testing purposes and as an example of how to make an implementation in your app. This is not recommended for production, we recommend you implement a solution that will store and load serialized sessions from a more ideal store such as a database like MySQL or MongoDB.

Create a New Session Storage Class

You can create a session storage class that includes ShopifyAPI::Auth::SessionStorage and override the methods as shown in the table and example below:

Method Name Input Type Return Type
store_session ShopifyAPI::Auth::Session Boolean (true if successful)
load_session String (session id) ShopifyAPI::Auth::Session
delete_session String (session id) Boolean (true if successful)
class CustomSessionStorage
  include ShopifyAPI::Auth::SessionStorage

  def initialize
    # Initialize as needed
  end

  def store_session(session)
    # Implement a store function
    some_store_function(id: session.id, session_data: session.serialize)
  end

  def load_session(id)
    # Implement a fetch function
    session_data = some_fetch_function(id)
    ShopifyAPI::Auth::Session.deserialize(session_data)
  end

  def delete_session(id)
    # Implement a delete function
    some_delete_function(id)
    true
  end
end

Note: We recommend utilizing the Session serialize and deserialize functions to make storing and loading sessions easier.

Once this is complete you can pass an instance of this session storage class as session_storage in ShopifyAPI::Context.setup