rails_admin 1.4.3 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +12 -4
- data/README.md +4 -7
- data/app/assets/javascripts/rails_admin/custom/ui.js +1 -0
- data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +1 -1
- data/app/assets/javascripts/rails_admin/ra.filtering-select.js +9 -7
- data/app/assets/javascripts/rails_admin/ra.i18n.js +28 -0
- data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.js +59 -0
- data/app/assets/javascripts/rails_admin/ra.sidescroll.js +31 -0
- data/app/assets/javascripts/rails_admin/ra.widgets.js +379 -0
- data/app/assets/javascripts/rails_admin/rails_admin.js +1 -0
- data/app/assets/javascripts/rails_admin/ui.js +135 -0
- data/app/assets/stylesheets/rails_admin/ra.sidescroll.scss +29 -0
- data/app/assets/stylesheets/rails_admin/ra.widgets.scss +4 -0
- data/app/assets/stylesheets/rails_admin/rails_admin.scss.erb +2 -1
- data/app/controllers/rails_admin/application_controller.rb +2 -0
- data/app/helpers/rails_admin/application_helper.rb +19 -4
- data/app/helpers/rails_admin/main_helper.rb +4 -4
- data/app/views/layouts/rails_admin/_head.html.haml +7 -0
- data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +1 -1
- data/app/views/layouts/rails_admin/_sidebar_navigation.html.haml +2 -1
- data/app/views/layouts/rails_admin/application.html.haml +3 -11
- data/app/views/layouts/rails_admin/pjax.html.haml +1 -5
- data/app/views/rails_admin/main/_form_action_text.html.haml +7 -0
- data/app/views/rails_admin/main/_form_file_upload.html.haml +4 -4
- data/app/views/rails_admin/main/_form_filtering_select.html.haml +1 -1
- data/app/views/rails_admin/main/_form_multiple_file_upload.html.haml +7 -5
- data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +18 -3
- data/app/views/rails_admin/main/dashboard.html.haml +1 -2
- data/app/views/rails_admin/main/export.html.haml +2 -2
- data/app/views/rails_admin/main/index.html.haml +19 -15
- data/app/views/rails_admin/main/show.html.haml +6 -7
- data/config/locales/rails_admin.en.yml +3 -0
- data/lib/generators/rails_admin/templates/initializer.erb +2 -2
- data/lib/rails_admin/abstract_model.rb +3 -3
- data/lib/rails_admin/adapters/active_record/abstract_object.rb +2 -2
- data/lib/rails_admin/adapters/active_record/property.rb +1 -5
- data/lib/rails_admin/adapters/active_record.rb +23 -10
- data/lib/rails_admin/adapters/mongoid/association.rb +1 -1
- data/lib/rails_admin/adapters/mongoid.rb +30 -13
- data/lib/rails_admin/bootstrap-sass/sass_functions.rb +1 -3
- data/lib/rails_admin/bootstrap-sass.rb +7 -3
- data/lib/rails_admin/config/actions/base.rb +17 -1
- data/lib/rails_admin/config/actions/edit.rb +1 -3
- data/lib/rails_admin/config/actions/index.rb +3 -3
- data/lib/rails_admin/config/actions/new.rb +1 -3
- data/lib/rails_admin/config/configurable.rb +6 -4
- data/lib/rails_admin/config/fields/association.rb +1 -1
- data/lib/rails_admin/config/fields/base.rb +2 -2
- data/lib/rails_admin/config/fields/factories/action_text.rb +12 -0
- data/lib/rails_admin/config/fields/factories/dragonfly.rb +1 -1
- data/lib/rails_admin/config/fields/factories/shrine.rb +27 -0
- data/lib/rails_admin/config/fields/types/action_text.rb +30 -0
- data/lib/rails_admin/config/fields/types/active_record_enum.rb +3 -19
- data/lib/rails_admin/config/fields/types/active_storage.rb +1 -0
- data/lib/rails_admin/config/fields/types/all.rb +2 -1
- data/lib/rails_admin/config/fields/types/belongs_to_association.rb +4 -0
- data/lib/rails_admin/config/fields/types/ck_editor.rb +7 -7
- data/lib/rails_admin/config/fields/types/code_mirror.rb +10 -12
- data/lib/rails_admin/config/fields/types/color.rb +2 -2
- data/lib/rails_admin/config/fields/types/file_upload.rb +6 -2
- data/lib/rails_admin/config/fields/types/froala.rb +9 -11
- data/lib/rails_admin/config/fields/types/hidden.rb +2 -2
- data/lib/rails_admin/config/fields/types/multiple_active_storage.rb +1 -1
- data/lib/rails_admin/config/fields/types/multiple_carrierwave.rb +15 -3
- data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +17 -3
- data/lib/rails_admin/config/fields/types/polymorphic_association.rb +7 -0
- data/lib/rails_admin/config/fields/types/shrine.rb +52 -0
- data/lib/rails_admin/config/fields/types/simple_mde.rb +8 -5
- data/lib/rails_admin/config/fields/types/string.rb +2 -2
- data/lib/rails_admin/config/fields/types/string_like.rb +19 -0
- data/lib/rails_admin/config/fields/types/text.rb +2 -20
- data/lib/rails_admin/config/fields/types/wysihtml5.rb +14 -10
- data/lib/rails_admin/config/fields.rb +2 -1
- data/lib/rails_admin/config/has_groups.rb +1 -1
- data/lib/rails_admin/config/lazy_model.rb +4 -4
- data/lib/rails_admin/config/model.rb +5 -4
- data/lib/rails_admin/config/proxyable/proxy.rb +7 -9
- data/lib/rails_admin/config/proxyable.rb +13 -1
- data/lib/rails_admin/config/sections/list.rb +23 -0
- data/lib/rails_admin/config.rb +9 -7
- data/lib/rails_admin/engine.rb +1 -2
- data/lib/rails_admin/extension.rb +16 -4
- data/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +45 -21
- data/lib/rails_admin/extensions/controller_extension.rb +6 -0
- data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +27 -10
- data/lib/rails_admin/extensions/pundit/authorization_adapter.rb +1 -3
- data/lib/rails_admin/support/csv_converter.rb +1 -1
- data/lib/rails_admin/version.rb +3 -3
- data/lib/rails_admin.rb +0 -1
- data/vendor/assets/fonts/rails_admin/FontAwesome.otf +0 -0
- data/vendor/assets/fonts/rails_admin/fontawesome-webfont.eot +0 -0
- data/vendor/assets/fonts/rails_admin/fontawesome-webfont.svg +2671 -0
- data/vendor/assets/fonts/rails_admin/fontawesome-webfont.ttf +0 -0
- data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff +0 -0
- data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff2 +0 -0
- data/{app → vendor}/assets/images/rails_admin/bootstrap/glyphicons-halflings-white.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/bootstrap/glyphicons-halflings.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/select.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/select2.png +0 -0
- data/{app → vendor}/assets/images/rails_admin/colorpicker/slider.png +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-affix.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-transition.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap-typeahead.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/bootstrap/bootstrap.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/jquery.colorpicker.js +0 -0
- data/{app → vendor}/assets/javascripts/rails_admin/jquery.pjax.js +1 -3
- data/vendor/assets/javascripts/rails_admin/moment-with-locales.js +9451 -3263
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_alerts.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_badges.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_breadcrumbs.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_button-groups.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_buttons.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_carousel.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_close.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_code.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_component-animations.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_dropdowns.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_forms.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_glyphicons.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_grid.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_input-groups.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_jumbotron.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_labels.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_list-group.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_media.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_mixins.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_modals.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_navbar.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_navs.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_normalize.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_pager.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_pagination.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_panels.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_popovers.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_print.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_progress-bars.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_responsive-embed.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_responsive-utilities.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_scaffolding.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_tables.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_theme.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_thumbnails.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_tooltip.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_type.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_utilities.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_variables.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/_wells.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/bootstrap.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_alerts.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_background-variant.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_border-radius.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_buttons.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_center-block.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_clearfix.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_forms.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_gradients.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_grid-framework.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_grid.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_hide-text.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_image.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_labels.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_list-group.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-divider.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-vertical-align.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_opacity.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_pagination.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_panels.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_progress-bar.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-filter.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_resize.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_responsive-visibility.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_size.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_tab-focus.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_table-row.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_text-emphasis.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_text-overflow.scss +0 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/bootstrap/mixins/_vendor-prefixes.scss +0 -0
- data/vendor/assets/stylesheets/rails_admin/font-awesome.scss +2342 -0
- data/{app → vendor}/assets/stylesheets/rails_admin/jquery.colorpicker.scss +0 -0
- metadata +163 -170
- data/app/assets/javascripts/rails_admin/custom/ui.coffee +0 -1
- data/app/assets/javascripts/rails_admin/ra.i18n.coffee +0 -10
- data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.coffee +0 -58
- data/app/assets/javascripts/rails_admin/ra.widgets.coffee +0 -359
- data/app/assets/javascripts/rails_admin/ui.coffee +0 -102
- data/lib/rails_admin/config/fields/factories/refile.rb +0 -25
- data/lib/rails_admin/config/fields/types/refile.rb +0 -27
- data/lib/rails_admin/extensions/cancan/authorization_adapter.rb +0 -57
- data/lib/rails_admin/extensions/cancan.rb +0 -3
|
@@ -2,38 +2,62 @@ module RailsAdmin
|
|
|
2
2
|
module Extensions
|
|
3
3
|
module CanCanCan
|
|
4
4
|
# This adapter is for the CanCanCan[https://github.com/CanCanCommunity/cancancan] authorization library.
|
|
5
|
-
class AuthorizationAdapter
|
|
5
|
+
class AuthorizationAdapter
|
|
6
|
+
module ControllerExtension
|
|
7
|
+
def current_ability
|
|
8
|
+
# use _current_user instead of default current_user so it works with
|
|
9
|
+
# whatever current user method is defined with RailsAdmin
|
|
10
|
+
@current_ability ||= @ability.new(_current_user)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# See the +authorize_with+ config method for where the initialization happens.
|
|
15
|
+
def initialize(controller, ability = ::Ability)
|
|
16
|
+
@controller = controller
|
|
17
|
+
@controller.instance_variable_set '@ability', ability
|
|
18
|
+
@controller.extend ControllerExtension
|
|
19
|
+
@controller.current_ability.authorize! :access, :rails_admin
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# This method is called in every controller action and should raise an exception
|
|
23
|
+
# when the authorization fails. The first argument is the name of the controller
|
|
24
|
+
# action as a symbol (:create, :bulk_delete, etc.). The second argument is the
|
|
25
|
+
# AbstractModel instance that applies. The third argument is the actual model
|
|
26
|
+
# instance if it is available.
|
|
6
27
|
def authorize(action, abstract_model = nil, model_object = nil)
|
|
7
28
|
return unless action
|
|
8
|
-
subject =
|
|
9
|
-
|
|
10
|
-
subject
|
|
11
|
-
else
|
|
12
|
-
@controller.current_ability.authorize!(*resolve_with_compatibility(action, subject))
|
|
13
|
-
end
|
|
29
|
+
action, subject = resolve_action_and_subject(action, abstract_model, model_object)
|
|
30
|
+
@controller.current_ability.authorize!(action, subject)
|
|
14
31
|
end
|
|
15
32
|
|
|
33
|
+
# This method is called primarily from the view to determine whether the given user
|
|
34
|
+
# has access to perform the action on a given model. It should return true when authorized.
|
|
35
|
+
# This takes the same arguments as +authorize+. The difference is that this will
|
|
36
|
+
# return a boolean whereas +authorize+ will raise an exception when not authorized.
|
|
16
37
|
def authorized?(action, abstract_model = nil, model_object = nil)
|
|
17
38
|
return unless action
|
|
18
|
-
subject =
|
|
19
|
-
|
|
20
|
-
@controller.current_ability.can?(*resolve_with_compatibility(action, subject))
|
|
39
|
+
action, subject = resolve_action_and_subject(action, abstract_model, model_object)
|
|
40
|
+
@controller.current_ability.can?(action, subject)
|
|
21
41
|
end
|
|
22
42
|
|
|
23
|
-
|
|
43
|
+
# This is called when needing to scope a database query. It is called within the list
|
|
44
|
+
# and bulk_delete/destroy actions and should return a scope which limits the records
|
|
45
|
+
# to those which the user can perform the given action on.
|
|
46
|
+
def query(action, abstract_model)
|
|
47
|
+
abstract_model.model.accessible_by(@controller.current_ability, action)
|
|
48
|
+
end
|
|
24
49
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
true
|
|
31
|
-
else
|
|
32
|
-
false
|
|
33
|
-
end
|
|
50
|
+
# This is called in the new/create actions to determine the initial attributes for new
|
|
51
|
+
# records. It should return a hash of attributes which match what the user
|
|
52
|
+
# is authorized to create.
|
|
53
|
+
def attributes_for(action, abstract_model)
|
|
54
|
+
@controller.current_ability.attributes_for(action, abstract_model && abstract_model.model)
|
|
34
55
|
end
|
|
35
56
|
|
|
36
|
-
|
|
57
|
+
private
|
|
58
|
+
|
|
59
|
+
def resolve_action_and_subject(action, abstract_model, model_object)
|
|
60
|
+
subject = model_object || abstract_model && abstract_model.model
|
|
37
61
|
if subject
|
|
38
62
|
[action, subject]
|
|
39
63
|
else
|
|
@@ -23,7 +23,7 @@ module RailsAdmin
|
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
def username
|
|
26
|
-
@user_class.find(@version.whodunnit).try(:email) rescue nil || @version.whodunnit
|
|
26
|
+
(@user_class.find(@version.whodunnit).try(:email) rescue nil) || @version.whodunnit
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
def item
|
|
@@ -31,6 +31,12 @@ module RailsAdmin
|
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
+
module ControllerExtension
|
|
35
|
+
def user_for_paper_trail
|
|
36
|
+
_current_user.try(:id) || _current_user
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
34
40
|
class AuditingAdapter
|
|
35
41
|
COLUMN_MAPPING = {
|
|
36
42
|
table: :item_type,
|
|
@@ -52,11 +58,7 @@ module RailsAdmin
|
|
|
52
58
|
|
|
53
59
|
def self.setup
|
|
54
60
|
raise('PaperTrail not found') unless defined?(::PaperTrail)
|
|
55
|
-
RailsAdmin::
|
|
56
|
-
def user_for_paper_trail
|
|
57
|
-
_current_user.try(:id) || _current_user
|
|
58
|
-
end
|
|
59
|
-
end
|
|
61
|
+
RailsAdmin::Extensions::ControllerExtension.send(:include, ControllerExtension)
|
|
60
62
|
end
|
|
61
63
|
|
|
62
64
|
def initialize(controller, user_class = 'User', version_class = '::Version')
|
|
@@ -112,22 +114,37 @@ module RailsAdmin
|
|
|
112
114
|
sort_reverse = 'true'
|
|
113
115
|
end
|
|
114
116
|
|
|
115
|
-
ar_model = model.model
|
|
116
117
|
current_page = page.presence || '1'
|
|
117
118
|
|
|
118
|
-
versions =
|
|
119
|
-
versions = versions.where item_id: object.id if object
|
|
119
|
+
versions = object.nil? ? versions_for_model(model) : object.versions
|
|
120
120
|
versions = versions.where('event LIKE ?', "%#{query}%") if query.present?
|
|
121
121
|
versions = versions.order(sort_reverse == 'true' ? "#{sort} DESC" : sort)
|
|
122
122
|
versions = all ? versions : versions.send(Kaminari.config.page_method_name, current_page).per(per_page)
|
|
123
123
|
paginated_proxies = Kaminari.paginate_array([], total_count: versions.try(:total_count) || versions.count)
|
|
124
|
-
paginated_proxies = paginated_proxies.
|
|
124
|
+
paginated_proxies = paginated_proxies.send(
|
|
125
|
+
paginated_proxies.respond_to?(Kaminari.config.page_method_name) ? Kaminari.config.page_method_name : :page,
|
|
126
|
+
current_page,
|
|
127
|
+
).per(per_page)
|
|
125
128
|
versions.each do |version|
|
|
126
129
|
paginated_proxies << VersionProxy.new(version, @user_class)
|
|
127
130
|
end
|
|
128
131
|
paginated_proxies
|
|
129
132
|
end
|
|
130
133
|
|
|
134
|
+
def versions_for_model(model)
|
|
135
|
+
model_name = model.model.name
|
|
136
|
+
base_class_name = model.model.base_class.name
|
|
137
|
+
|
|
138
|
+
options =
|
|
139
|
+
if base_class_name == model_name
|
|
140
|
+
{item_type: model_name}
|
|
141
|
+
else
|
|
142
|
+
{item_type: base_class_name, item_id: model.model.all}
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
version_class_for(model.model).where(options)
|
|
146
|
+
end
|
|
147
|
+
|
|
131
148
|
# PT can be configured to use [custom version
|
|
132
149
|
# classes](https://github.com/paper-trail-gem/paper_trail#6a-custom-version-classes)
|
|
133
150
|
#
|
|
@@ -7,9 +7,7 @@ module RailsAdmin
|
|
|
7
7
|
class AuthorizationAdapter
|
|
8
8
|
# This method is called first time only and used for setup
|
|
9
9
|
def self.setup
|
|
10
|
-
RailsAdmin::
|
|
11
|
-
include ::Pundit
|
|
12
|
-
end unless RailsAdmin::ApplicationController.ancestors.include? 'Pundit'
|
|
10
|
+
RailsAdmin::Extensions::ControllerExtension.send(:include, ::Pundit)
|
|
13
11
|
end
|
|
14
12
|
|
|
15
13
|
# See the +authorize_with+ config method for where the initialization happens.
|
|
@@ -73,7 +73,7 @@ module RailsAdmin
|
|
|
73
73
|
generator_options = (options[:generator] || {}).symbolize_keys.delete_if { |_, value| value.blank? }
|
|
74
74
|
method = @objects.respond_to?(:find_each) ? :find_each : :each
|
|
75
75
|
|
|
76
|
-
CSV.generate(generator_options) do |csv|
|
|
76
|
+
CSV.generate(**generator_options) do |csv|
|
|
77
77
|
csv << generate_csv_header unless options[:skip_header]
|
|
78
78
|
|
|
79
79
|
@objects.send(method) do |object|
|
data/lib/rails_admin/version.rb
CHANGED
data/lib/rails_admin.rb
CHANGED
|
@@ -2,7 +2,6 @@ require 'rails_admin/engine'
|
|
|
2
2
|
require 'rails_admin/abstract_model'
|
|
3
3
|
require 'rails_admin/config'
|
|
4
4
|
require 'rails_admin/extension'
|
|
5
|
-
require 'rails_admin/extensions/cancan'
|
|
6
5
|
require 'rails_admin/extensions/cancancan'
|
|
7
6
|
require 'rails_admin/extensions/pundit'
|
|
8
7
|
require 'rails_admin/extensions/paper_trail'
|
|
Binary file
|
|
Binary file
|