Sha256: 9dbc54216865b94e3a3d941f1e846a849f93ef7a35bf53bf65170a7574a07464

Contents?: true

Size: 1.36 KB

Versions: 10

Compression:

Stored size: 1.36 KB

Contents

# frozen_string_literal: true

module ActiveElement
  # Stores various data for a controller, including various field definitions and authentication
  # configuration. Used throughout ActiveElement for generating dynamic content based on
  # controller configuration.
  class ControllerState
    attr_reader :permissions, :listable_fields, :viewable_fields, :editable_fields, :searchable_fields,
                :field_options
    attr_accessor :sign_in_path, :sign_in, :sign_in_method, :sign_out_path, :sign_out_method,
                  :deletable, :authorizor, :authenticator, :list_order, :list_scope, :search_required, :model

    def initialize(controller:)
      @controller = controller
      @permissions = []
      @authenticator = nil
      @authorizor = nil
      @deletable = false
      @listable_fields = []
      @viewable_fields = []
      @editable_fields = []
      @searchable_fields = []
      @field_options = {}
      @model = nil
    end

    def deletable?
      !!deletable
    end

    def viewable?
      viewable_fields.present? || controller.public_methods(false).include?(:show)
    end

    def editable?
      editable_fields.present? || controller.public_methods(false).include?(:edit)
    end

    def creatable?
      editable_fields.present? || controller.public_methods(false).include?(:new)
    end

    private

    attr_reader :controller
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
active_element-0.0.31 lib/active_element/controller_state.rb
active_element-0.0.30 lib/active_element/controller_state.rb
active_element-0.0.29 lib/active_element/controller_state.rb
active_element-0.0.28 lib/active_element/controller_state.rb
active_element-0.0.27 lib/active_element/controller_state.rb
active_element-0.0.26 lib/active_element/controller_state.rb
active_element-0.0.24 lib/active_element/controller_state.rb
active_element-0.0.23 lib/active_element/controller_state.rb
active_element-0.0.22 lib/active_element/controller_state.rb
active_element-0.0.21 lib/active_element/controller_state.rb