Class: DraftGenerators::DeviseCustomizationService

Inherits:
Object
  • Object
show all
Defined in:
lib/devise_customization_service.rb

Instance Method Summary collapse

Constructor Details

#initialize(attributes) ⇒ DeviseCustomizationService

Returns a new instance of DeviseCustomizationService.



5
6
7
# File 'lib/devise_customization_service.rb', line 5

def initialize(attributes)
  @attributes = attributes
end

Instance Method Details

#column_namesObject



73
74
75
# File 'lib/devise_customization_service.rb', line 73

def column_names
  columns.map(&:name)
end

#column_names_stringObject



77
78
79
# File 'lib/devise_customization_service.rb', line 77

def column_names_string
  ":" + column_names.join(", :").to_s
end

#columnsObject



85
86
87
# File 'lib/devise_customization_service.rb', line 85

def columns
  @_columns ||=  eligible_attributes
end

#eligible_attributesObject



89
90
91
92
93
# File 'lib/devise_customization_service.rb', line 89

def eligible_attributes
  @attributes.reject do |attribute|
    %w(id created_at updated_at email password).include?(attribute.name)
  end
end

#form_fields_to_addObject



9
10
11
12
13
14
15
# File 'lib/devise_customization_service.rb', line 9

def form_fields_to_add
  form_fields = ""
  columns.each do |column|
    form_fields += input_field_block(column)
  end
  form_fields
end

#input_field_block(column) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/devise_customization_service.rb', line 17

def input_field_block(column)
  column_name = column.name
  %{          
      <!-- Devise Input for #{column_name} start -->
      <div class="form-group">
        <% #{column_name}_was_invalid = resource.errors.include?(:#{column_name}) %>

        <% #{column_name}_class = "form-control" %>

        <% if was_validated %>
          <% if #{column_name}_was_invalid %>
            <% #{column_name}_class << " is-invalid" %>
          <% else %>
            <% #{column_name}_class << " is-valid" %>
          <% end %>
        <% end %>

        <%= f.label :#{column_name} %>

        #{DraftGenerators::RailsTagService.input_tag(column)}

        <% if #{column_name}_was_invalid %>
          <% resource.errors.full_messages_for(:#{column_name}).each do |message| %>
            <div class="invalid-feedback d-flex">
              <%= message %>
            </div>
          <% end %>
        <% end %>
      </div>
      <!-- Devise Input for #{column_name} end -->
}
end

#protect_from_forgery_codeObject



81
82
83
# File 'lib/devise_customization_service.rb', line 81

def protect_from_forgery_code
  "protect_from_forgery with: :exception"
end

#security_field_blockObject



50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/devise_customization_service.rb', line 50

def security_field_block
  return "" if eligible_attributes.empty?
    "

  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, :keys => [#{column_names_string}])

devise_parameter_sanitizer.permit(:account_update, :keys => [#{column_names_string}])
  end"
end

#sign_in_resource_button_blockObject



69
70
71
# File 'lib/devise_customization_service.rb', line 69

def 
  %{          <%= f.button class: "btn btn-outline-primary btn-block" %>}
end

#update_resource_button_blockObject



65
66
67
# File 'lib/devise_customization_service.rb', line 65

def update_resource_button_block
  %{          <%= f.submit "Update", class: "btn btn-block btn-outline-primary" %>}
end