Sha256: 6d683be8e62b6b002e7eccc5534b9e22cdf567d39acb8fc7bf6c62a5513c8305

Contents?: true

Size: 714 Bytes

Versions: 2

Compression:

Stored size: 714 Bytes

Contents

# frozen_string_literal: true

module SolidusAdmin::ControllerHelpers::Authorization
  extend ActiveSupport::Concern

  included do
    before_action :authorize_solidus_admin_user!
  end

  private

  def current_ability
    @current_ability ||= Spree::Ability.new(current_solidus_admin_user)
  end

  def authorize_solidus_admin_user!
    subject = authorization_subject

    authorize! :admin, subject
    authorize! action_name, subject
  end

  def authorization_subject
    "Spree::#{controller_name.classify}".constantize
  rescue NameError
    raise NotImplementedError, "Couldn't infer the model class from the controller name, " \
      "please implement `#{self.class}#authorization_subject`."
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
solidus_admin-0.0.2 app/controllers/solidus_admin/controller_helpers/authorization.rb
solidus_admin-0.0.1 app/controllers/solidus_admin/controller_helpers/authorization.rb