Sha256: 1cd6c53543366c982f73ceb01649fdd9bc47b89910963920c044d383e3f707e4

Contents?: true

Size: 1.42 KB

Versions: 21

Compression:

Stored size: 1.42 KB

Contents

# frozen_string_literal: true

module Motor
  module BuildSchema
    module AdjustDeviseModelSchema
      HIDDEN_COLUMNS = %w[
        encrypted_password
        reset_password_token
        confirmation_token
      ].freeze

      READ_ONLY_COLUMNS = %w[
        reset_password_sent_at
        remember_created_at
        sign_in_count
        current_sign_in_at
        last_sign_in_at
        current_sign_in_ip
        last_sign_in_ip
        confirmed_at
        confirmation_sent_at
      ].freeze

      module_function

      def call(schema, devise_modules)
        modify_column_access_types!(schema[:columns])
        add_password_column!(schema[:columns]) if devise_modules.include?(:database_authenticatable)

        schema
      end

      def modify_column_access_types!(columns)
        columns.each do |column|
          column[:access_type] =
            case column[:name]
            when *HIDDEN_COLUMNS
              ColumnAccessTypes::HIDDEN
            when *READ_ONLY_COLUMNS
              ColumnAccessTypes::READ_ONLY
            else
              column[:access_type]
            end
        end
      end

      def add_password_column!(columns)
        columns << {
          name: 'password',
          display_name: 'Password',
          column_type: 'string',
          access_type: 'write_only',
          default_value: nil,
          validators: [],
          virtual: true
        }
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
motor-admin-0.1.66 lib/motor/build_schema/adjust_devise_model_schema.rb
motor-admin-0.1.65 lib/motor/build_schema/adjust_devise_model_schema.rb
motor-admin-0.1.64 lib/motor/build_schema/adjust_devise_model_schema.rb
motor-admin-0.1.63 lib/motor/build_schema/adjust_devise_model_schema.rb
motor-admin-0.1.62 lib/motor/build_schema/adjust_devise_model_schema.rb
motor-admin-0.1.61 lib/motor/build_schema/adjust_devise_model_schema.rb
motor-admin-0.1.60 lib/motor/build_schema/adjust_devise_model_schema.rb
motor-admin-0.1.58 lib/motor/build_schema/adjust_devise_model_schema.rb
motor-admin-0.1.57 lib/motor/build_schema/adjust_devise_model_schema.rb
motor-admin-0.1.56 lib/motor/build_schema/adjust_devise_model_schema.rb
motor-admin-0.1.55 lib/motor/build_schema/adjust_devise_model_schema.rb
motor-admin-0.1.54 lib/motor/build_schema/adjust_devise_model_schema.rb
motor-admin-0.1.53 lib/motor/build_schema/adjust_devise_model_schema.rb
motor-admin-0.1.52 lib/motor/build_schema/adjust_devise_model_schema.rb
motor-admin-0.1.51 lib/motor/build_schema/adjust_devise_model_schema.rb
motor-admin-0.1.50 lib/motor/build_schema/adjust_devise_model_schema.rb
motor-admin-0.1.49 lib/motor/build_schema/adjust_devise_model_schema.rb
motor-admin-0.1.48 lib/motor/build_schema/adjust_devise_model_schema.rb
motor-admin-0.1.47 lib/motor/build_schema/adjust_devise_model_schema.rb
motor-admin-0.1.46 lib/motor/build_schema/adjust_devise_model_schema.rb