Sha256: d73b63cbf0b9e1abd91f6482f6dfc35ecb4bef3dbacb2293574d901adf878d68

Contents?: true

Size: 1.71 KB

Versions: 18

Compression:

Stored size: 1.71 KB

Contents

# frozen_string_literal: true

module ShopifyApp
  module AccessScopes
    class UserStrategy
      class << self
        def update_access_scopes?(user_id: nil, shopify_user_id: nil)
          return update_access_scopes_for_user_id?(user_id) if user_id
          return update_access_scopes_for_shopify_user_id?(shopify_user_id) if shopify_user_id

          raise(
            ::ShopifyApp::InvalidInput,
            "#update_access_scopes? requires user_id or shopify_user_id parameter inputs",
          )
        end

        def covers_scopes?(current_shopify_session)
          # NOTE: this not Ruby's `covers?` method, it is defined in ShopifyAPI::Auth::AuthScopes
          current_shopify_session.scope.to_a.empty? || current_shopify_session.scope.covers?(ShopifyAPI::Context.scope)
        end

        private

        def update_access_scopes_for_user_id?(user_id)
          user_access_scopes = user_access_scopes_by_user_id(user_id)
          configuration_access_scopes != user_access_scopes
        end

        def update_access_scopes_for_shopify_user_id?(shopify_user_id)
          user_access_scopes = user_access_scopes_by_shopify_user_id(shopify_user_id)
          configuration_access_scopes != user_access_scopes
        end

        def user_access_scopes_by_user_id(user_id)
          ShopifyApp::SessionRepository.retrieve_user_session(user_id)&.scope
        end

        def user_access_scopes_by_shopify_user_id(shopify_user_id)
          ShopifyApp::SessionRepository.retrieve_user_session_by_shopify_user_id(shopify_user_id)&.scope
        end

        def configuration_access_scopes
          ShopifyAPI::Auth::AuthScopes.new(ShopifyApp.configuration.user_access_scopes)
        end
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
shopify_app-22.5.2 lib/shopify_app/access_scopes/user_strategy.rb
shopify_app-22.5.1 lib/shopify_app/access_scopes/user_strategy.rb
shopify_app-22.5.0 lib/shopify_app/access_scopes/user_strategy.rb
shopify_app-22.4.0 lib/shopify_app/access_scopes/user_strategy.rb
shopify_app-22.3.1 lib/shopify_app/access_scopes/user_strategy.rb
shopify_app-22.3.0 lib/shopify_app/access_scopes/user_strategy.rb
shopify_app-22.2.1 lib/shopify_app/access_scopes/user_strategy.rb
shopify_app-22.2.0 lib/shopify_app/access_scopes/user_strategy.rb
shopify_app-22.1.0 lib/shopify_app/access_scopes/user_strategy.rb
shopify_app-22.0.1 lib/shopify_app/access_scopes/user_strategy.rb
shopify_app-22.00.0 lib/shopify_app/access_scopes/user_strategy.rb
shopify_app-21.10.0 lib/shopify_app/access_scopes/user_strategy.rb
shopify_app-21.9.0 lib/shopify_app/access_scopes/user_strategy.rb
shopify_app-21.8.1 lib/shopify_app/access_scopes/user_strategy.rb
shopify_app-21.8.0 lib/shopify_app/access_scopes/user_strategy.rb
shopify_app-21.7.0 lib/shopify_app/access_scopes/user_strategy.rb
shopify_app-21.6.0 lib/shopify_app/access_scopes/user_strategy.rb
shopify_app-21.5.0 lib/shopify_app/access_scopes/user_strategy.rb