decidim-core 0.31.6 → 0.31.8

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.
Files changed (166) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/card_metadata_cell.rb +1 -1
  3. data/app/cells/decidim/comments_button_cell.rb +9 -1
  4. data/app/cells/decidim/content_blocks/participatory_space_main_data/title.erb +1 -14
  5. data/app/cells/decidim/data_consent/category.erb +20 -33
  6. data/app/cells/decidim/following_cell.rb +1 -1
  7. data/app/cells/decidim/footer_topics/show.erb +5 -8
  8. data/app/cells/decidim/nav_links/show.erb +3 -1
  9. data/app/cells/decidim/participatory_space_dropdown_metadata/links.erb +1 -1
  10. data/app/cells/decidim/participatory_space_private_user/show.erb +1 -1
  11. data/app/cells/decidim/share_text_widget/modal.erb +1 -0
  12. data/app/cells/decidim/share_widget/modal.erb +1 -0
  13. data/app/cells/decidim/share_widget/qr_code_modal.erb +2 -4
  14. data/app/commands/decidim/create_omniauth_registration.rb +17 -2
  15. data/app/controllers/concerns/decidim/devise_authentication_methods.rb +4 -0
  16. data/app/controllers/concerns/decidim/devise_controllers.rb +2 -0
  17. data/app/controllers/concerns/decidim/disable_redirection_to_external_host.rb +2 -0
  18. data/app/controllers/concerns/decidim/filter_resource.rb +2 -0
  19. data/app/controllers/concerns/decidim/impersonate_users.rb +2 -2
  20. data/app/controllers/concerns/decidim/locale_switcher.rb +62 -11
  21. data/app/controllers/concerns/decidim/needs_permission.rb +22 -10
  22. data/app/controllers/concerns/decidim/onboarding_action_methods.rb +2 -0
  23. data/app/controllers/concerns/decidim/paginable.rb +7 -3
  24. data/app/controllers/concerns/decidim/payload_info.rb +2 -0
  25. data/app/controllers/concerns/decidim/resource_versions_concern.rb +14 -0
  26. data/app/controllers/decidim/application_controller.rb +0 -6
  27. data/app/controllers/decidim/authorization_modals_controller.rb +2 -0
  28. data/app/controllers/decidim/components/base_controller.rb +2 -0
  29. data/app/controllers/decidim/devise/passwords_controller.rb +8 -0
  30. data/app/controllers/decidim/favicon_controller.rb +9 -0
  31. data/app/controllers/decidim/free_resource_authorization_modals_controller.rb +2 -0
  32. data/app/controllers/decidim/gamification/badges_controller.rb +2 -0
  33. data/app/controllers/decidim/homepage_controller.rb +4 -1
  34. data/app/controllers/decidim/likes_controller.rb +1 -1
  35. data/app/controllers/decidim/links_controller.rb +2 -0
  36. data/app/controllers/decidim/manifests_controller.rb +2 -0
  37. data/app/controllers/decidim/messaging/conversations_controller.rb +10 -4
  38. data/app/controllers/decidim/newsletters_controller.rb +4 -0
  39. data/app/controllers/decidim/notifications_subscriptions_controller.rb +4 -0
  40. data/app/controllers/decidim/offline_controller.rb +5 -1
  41. data/app/controllers/decidim/open_data_controller.rb +5 -1
  42. data/app/controllers/decidim/pages_controller.rb +31 -3
  43. data/app/controllers/decidim/private_downloads_controller.rb +2 -0
  44. data/app/controllers/decidim/profiles_controller.rb +10 -0
  45. data/app/controllers/decidim/qr_controller.rb +3 -1
  46. data/app/controllers/decidim/resource_autocomplete_controller.rb +2 -0
  47. data/app/controllers/decidim/searches_controller.rb +2 -0
  48. data/app/controllers/decidim/short_links_controller.rb +4 -0
  49. data/app/controllers/decidim/static_map_controller.rb +2 -0
  50. data/app/controllers/decidim/timeouts_controller.rb +4 -0
  51. data/app/controllers/decidim/tos_controller.rb +2 -0
  52. data/app/controllers/decidim/upload_validations_controller.rb +4 -2
  53. data/app/controllers/decidim/user_activities_controller.rb +2 -0
  54. data/app/events/decidim/amendable/amendment_base_event.rb +7 -1
  55. data/app/forms/decidim/upload_validation_form.rb +16 -10
  56. data/app/helpers/concerns/decidim/user_role_checker.rb +35 -10
  57. data/app/helpers/decidim/menu_helper.rb +0 -2
  58. data/app/helpers/decidim/sanitize_helper.rb +11 -1
  59. data/app/jobs/decidim/application_job.rb +4 -0
  60. data/app/models/decidim/authorization.rb +24 -0
  61. data/app/models/decidim/oauth_application.rb +1 -0
  62. data/app/models/decidim/user.rb +3 -2
  63. data/app/models/decidim/user_base_entity.rb +1 -1
  64. data/app/packs/src/decidim/callout.js +10 -0
  65. data/app/packs/src/decidim/callout.test.js +32 -0
  66. data/app/packs/src/decidim/controllers/accordion/accordion.test.js +260 -42
  67. data/app/packs/src/decidim/controllers/accordion/controller.js +136 -17
  68. data/app/packs/src/decidim/controllers/dropdown/controller.js +6 -0
  69. data/app/packs/src/decidim/controllers/dropdown/dropdown.test.js +28 -0
  70. data/app/packs/src/decidim/controllers/password_toggler/controller.js +22 -1
  71. data/app/packs/src/decidim/controllers/password_toggler/password_toggler.test.js +11 -20
  72. data/app/packs/src/decidim/datepicker/datepicker_functions.js +34 -23
  73. data/app/packs/src/decidim/datepicker/generate_datepicker.js +4 -4
  74. data/app/packs/src/decidim/datepicker/test/time.test.js +39 -24
  75. data/app/packs/src/decidim/direct_uploads/upload_modal.js +2 -1
  76. data/app/packs/src/decidim/map/controller.js +10 -1
  77. data/app/packs/src/decidim/refactor/moved/focus_guard.js +12 -12
  78. data/app/packs/src/decidim/refactor/moved/focus_guard.test.js +136 -0
  79. data/app/packs/src/decidim/utilities/dom.js +2 -2
  80. data/app/packs/stylesheets/decidim/_cards.scss +1 -1
  81. data/app/packs/stylesheets/decidim/_content_blocks.scss +4 -10
  82. data/app/packs/stylesheets/decidim/_conversations.scss +0 -8
  83. data/app/packs/stylesheets/decidim/_cookies.scss +13 -5
  84. data/app/packs/stylesheets/decidim/_documents.scss +1 -1
  85. data/app/packs/stylesheets/decidim/_footer.scss +33 -1
  86. data/app/packs/stylesheets/decidim/_modal.scss +16 -8
  87. data/app/packs/stylesheets/decidim/_modal_share.scss +0 -22
  88. data/app/packs/stylesheets/decidim/_participatory_spaces.scss +12 -2
  89. data/app/packs/stylesheets/decidim/_rich_text.scss +12 -9
  90. data/app/packs/stylesheets/decidim/_typography.scss +5 -2
  91. data/app/packs/stylesheets/decidim/legacy/email.scss +0 -5
  92. data/app/permissions/decidim/permissions.rb +20 -0
  93. data/app/presenters/decidim/admin_log/component_presenter.rb +1 -1
  94. data/app/presenters/decidim/footer_menu_presenter.rb +2 -4
  95. data/app/presenters/decidim/log/base_presenter.rb +10 -1
  96. data/app/presenters/decidim/log/user_presenter.rb +2 -2
  97. data/app/resolvers/decidim/meta_image_url_resolver.rb +7 -0
  98. data/app/serializers/decidim/exporters/open_data_blocked_user_serializer.rb +11 -2
  99. data/app/serializers/decidim/exporters/open_data_moderation_serializer.rb +25 -1
  100. data/app/services/decidim/svg_content_validator.rb +554 -0
  101. data/app/uploaders/decidim/application_uploader.rb +2 -2
  102. data/app/validators/uploader_image_content_validator.rb +278 -0
  103. data/app/views/decidim/application/_radio_accordion.html.erb +1 -5
  104. data/app/views/decidim/messaging/conversations/create.js.erb +1 -3
  105. data/app/views/decidim/searches/_filters.html.erb +1 -1
  106. data/app/views/decidim/shared/_login_modal.html.erb +12 -14
  107. data/app/views/layouts/decidim/_mailer_logo.html.erb +1 -1
  108. data/app/views/layouts/decidim/footer/_main.html.erb +1 -1
  109. data/app/views/layouts/decidim/footer/_main_links.html.erb +56 -28
  110. data/config/initializers/rack_attack.rb +10 -0
  111. data/config/locales/ar.yml +0 -20
  112. data/config/locales/bg.yml +0 -20
  113. data/config/locales/ca-IT.yml +31 -24
  114. data/config/locales/ca.yml +31 -24
  115. data/config/locales/cs.yml +20 -22
  116. data/config/locales/de.yml +59 -26
  117. data/config/locales/el.yml +0 -18
  118. data/config/locales/en.yml +31 -24
  119. data/config/locales/es-MX.yml +31 -24
  120. data/config/locales/es-PY.yml +31 -24
  121. data/config/locales/es.yml +31 -24
  122. data/config/locales/eu.yml +178 -176
  123. data/config/locales/fi-plain.yml +29 -24
  124. data/config/locales/fi.yml +29 -24
  125. data/config/locales/fr-CA.yml +10 -20
  126. data/config/locales/fr.yml +10 -20
  127. data/config/locales/gl.yml +1440 -51
  128. data/config/locales/hu.yml +0 -18
  129. data/config/locales/id-ID.yml +0 -18
  130. data/config/locales/is-IS.yml +0 -6
  131. data/config/locales/it.yml +0 -17
  132. data/config/locales/ja.yml +29 -24
  133. data/config/locales/lb.yml +0 -18
  134. data/config/locales/lt.yml +0 -19
  135. data/config/locales/lv.yml +0 -18
  136. data/config/locales/nl.yml +0 -18
  137. data/config/locales/no.yml +0 -18
  138. data/config/locales/pl.yml +2 -20
  139. data/config/locales/pt-BR.yml +0 -26
  140. data/config/locales/pt.yml +0 -18
  141. data/config/locales/ro-RO.yml +0 -19
  142. data/config/locales/ru.yml +0 -8
  143. data/config/locales/sk.yml +2 -26
  144. data/config/locales/sv.yml +45 -29
  145. data/config/locales/tr-TR.yml +0 -20
  146. data/config/locales/uk.yml +0 -6
  147. data/config/locales/zh-CN.yml +0 -16
  148. data/config/locales/zh-TW.yml +0 -19
  149. data/db/migrate/20250217192438_convert_user_groups_into_users.rb +3 -2
  150. data/db/migrate/20260909000000_add_failed_attempts_and_locked_at_to_decidim_authorizations.rb +8 -0
  151. data/decidim-core.gemspec +3 -0
  152. data/lib/decidim/core/test/shared_examples/amendable/amendment_event_examples.rb +2 -2
  153. data/lib/decidim/core/test/shared_examples/amendable/amendment_promoted_event_examples.rb +3 -3
  154. data/lib/decidim/core/test/shared_examples/comments_examples.rb +26 -0
  155. data/lib/decidim/core/test/shared_examples/has_space_in_mcell_examples.rb +2 -1
  156. data/lib/decidim/core/test/shared_examples/participatory_space_members_page_examples.rb +77 -0
  157. data/lib/decidim/core/test/shared_examples/participatory_space_members_shared_examples.rb +85 -6
  158. data/lib/decidim/core/test/shared_examples/resource_liked_event_examples.rb +3 -3
  159. data/lib/decidim/core/test/shared_examples/versions_controller_examples.rb +23 -1
  160. data/lib/decidim/core/version.rb +1 -1
  161. data/lib/decidim/core.rb +10 -1
  162. data/lib/decidim/has_upload_validations.rb +1 -0
  163. data/lib/decidim/legacy_form_builder.rb +4 -0
  164. data/lib/decidim/map/dynamic_map.rb +3 -1
  165. data/lib/decidim/query_extensions.rb +2 -0
  166. metadata +31 -6
data/lib/decidim/core.rb CHANGED
@@ -295,7 +295,7 @@ module Decidim
295
295
 
296
296
  # Users that have not logged in for this period of time will be deleted
297
297
  config_accessor :delete_inactive_users_after_days do
298
- Decidim::Env.new("DELETE_INACTIVE_USERS_AFTER_DAYS", 365).to_i
298
+ Decidim::Env.new("DECIDIM_DELETE_INACTIVE_USERS_AFTER_DAYS", 365).to_i
299
299
  end
300
300
 
301
301
  # The minimum allowed inactivity period for deleting participants.
@@ -486,6 +486,15 @@ module Decidim
486
486
  Decidim::Env.new("DECIDIM_THROTTLING_PERIOD", "1").to_i.minutes
487
487
  end
488
488
 
489
+ # Max failed attempts for verification code confirmation before lockout.
490
+ mattr_accessor :verification_max_failed_attempts, default: Decidim::Env.new("DECIDIM_VERIFICATION_MAX_FAILED_ATTEMPTS", "5").to_i
491
+
492
+ # Time window after which a locked verification is automatically unlocked.
493
+ mattr_accessor :verification_unlock_in, default: Decidim::Env.new("DECIDIM_VERIFICATION_UNLOCK_IN", "30").to_i.minutes
494
+
495
+ # Time window (in minutes) after which a verification code expires (SMS only).
496
+ mattr_accessor :verification_code_expiry_minutes, default: Decidim::Env.new("DECIDIM_VERIFICATION_CODE_EXPIRY_MINUTES", "10").to_i
497
+
489
498
  # Time window were users can access the website even if their email is not confirmed.
490
499
  config_accessor :unconfirmed_access_for do
491
500
  Decidim::Env.new("DECIDIM_UNCONFIRMED_ACCESS_FOR", "0").to_i.days
@@ -15,6 +15,7 @@ module Decidim
15
15
  file_size: { less_than_or_equal_to: max_size },
16
16
  organization_present: true,
17
17
  uploader_content_type: true,
18
+ uploader_image_content: true,
18
19
  uploader_image_dimensions: true
19
20
  )
20
21
 
@@ -31,6 +31,10 @@ module Decidim
31
31
  options[:data][:controller] ||= ""
32
32
  options[:data][:controller] += " date-picker"
33
33
 
34
+ if (default_time = options.delete(:default_time))
35
+ options[:data][:default_time] = default_time
36
+ end
37
+
34
38
  field(attribute, options) do |opts|
35
39
  super(attribute, opts)
36
40
  end
@@ -30,7 +30,9 @@ module Decidim
30
30
  def builder_options
31
31
  {
32
32
  marker_color: organization.colors.fetch("primary", "#e02d2d"),
33
- tile_layer: tile_layer_configuration
33
+ tile_layer: tile_layer_configuration,
34
+ zoom_in_text: I18n.t("zoom_in", scope: "decidim.map.dynamic"),
35
+ zoom_out_text: I18n.t("zoom_out", scope: "decidim.map.dynamic")
34
36
  }
35
37
  end
36
38
 
@@ -54,6 +54,8 @@ module Decidim
54
54
  end
55
55
 
56
56
  def user(id: nil, nickname: nil)
57
+ return nil if id.blank? && nickname.blank?
58
+
57
59
  Core::UserEntityFinder.new.call(object, { id:, nickname: }, context)
58
60
  end
59
61
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.31.6
4
+ version: 0.31.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josep Jaume Rey Peroy
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2026-07-06 00:00:00.000000000 Z
13
+ date: 2026-10-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: concurrent-ruby
@@ -648,6 +648,26 @@ dependencies:
648
648
  - - "~>"
649
649
  - !ruby/object:Gem::Version
650
650
  version: '6.0'
651
+ - !ruby/object:Gem::Dependency
652
+ name: rack-proxy
653
+ requirement: !ruby/object:Gem::Requirement
654
+ requirements:
655
+ - - "~>"
656
+ - !ruby/object:Gem::Version
657
+ version: 0.8.3
658
+ - - "<"
659
+ - !ruby/object:Gem::Version
660
+ version: '1.0'
661
+ type: :runtime
662
+ prerelease: false
663
+ version_requirements: !ruby/object:Gem::Requirement
664
+ requirements:
665
+ - - "~>"
666
+ - !ruby/object:Gem::Version
667
+ version: 0.8.3
668
+ - - "<"
669
+ - !ruby/object:Gem::Version
670
+ version: '1.0'
651
671
  - !ruby/object:Gem::Dependency
652
672
  name: rails
653
673
  requirement: !ruby/object:Gem::Requirement
@@ -828,28 +848,28 @@ dependencies:
828
848
  requirements:
829
849
  - - '='
830
850
  - !ruby/object:Gem::Version
831
- version: 0.31.6
851
+ version: 0.31.8
832
852
  type: :development
833
853
  prerelease: false
834
854
  version_requirements: !ruby/object:Gem::Requirement
835
855
  requirements:
836
856
  - - '='
837
857
  - !ruby/object:Gem::Version
838
- version: 0.31.6
858
+ version: 0.31.8
839
859
  - !ruby/object:Gem::Dependency
840
860
  name: decidim-dev
841
861
  requirement: !ruby/object:Gem::Requirement
842
862
  requirements:
843
863
  - - '='
844
864
  - !ruby/object:Gem::Version
845
- version: 0.31.6
865
+ version: 0.31.8
846
866
  type: :development
847
867
  prerelease: false
848
868
  version_requirements: !ruby/object:Gem::Requirement
849
869
  requirements:
850
870
  - - '='
851
871
  - !ruby/object:Gem::Version
852
- version: 0.31.6
872
+ version: 0.31.8
853
873
  description: Adds core features so other engines can hook into the framework.
854
874
  email:
855
875
  - josepjaume@gmail.com
@@ -1578,6 +1598,7 @@ files:
1578
1598
  - app/packs/src/decidim/attachments/file_or_link_tabs.js
1579
1599
  - app/packs/src/decidim/attachments/index.js
1580
1600
  - app/packs/src/decidim/callout.js
1601
+ - app/packs/src/decidim/callout.test.js
1581
1602
  - app/packs/src/decidim/confirm.js
1582
1603
  - app/packs/src/decidim/confirm.test.js
1583
1604
  - app/packs/src/decidim/controllers/.keep
@@ -1735,6 +1756,7 @@ files:
1735
1756
  - app/packs/src/decidim/refactor/moved/check_boxes_tree.js
1736
1757
  - app/packs/src/decidim/refactor/moved/delayed.js
1737
1758
  - app/packs/src/decidim/refactor/moved/focus_guard.js
1759
+ - app/packs/src/decidim/refactor/moved/focus_guard.test.js
1738
1760
  - app/packs/src/decidim/refactor/moved/history.js
1739
1761
  - app/packs/src/decidim/refactor/moved/i18n.js
1740
1762
  - app/packs/src/decidim/refactor/moved/i18n.test.js
@@ -1951,6 +1973,7 @@ files:
1951
1973
  - app/services/decidim/send_push_notification.rb
1952
1974
  - app/services/decidim/settings_change.rb
1953
1975
  - app/services/decidim/static_map_generator.rb
1976
+ - app/services/decidim/svg_content_validator.rb
1954
1977
  - app/services/decidim/tokenizer.rb
1955
1978
  - app/services/decidim/traceability.rb
1956
1979
  - app/uploaders/decidim/application_uploader.rb
@@ -1978,6 +2001,7 @@ files:
1978
2001
  - app/validators/translatable_presence_validator.rb
1979
2002
  - app/validators/translated_etiquette_validator.rb
1980
2003
  - app/validators/uploader_content_type_validator.rb
2004
+ - app/validators/uploader_image_content_validator.rb
1981
2005
  - app/validators/uploader_image_dimensions_validator.rb
1982
2006
  - app/validators/url_validator.rb
1983
2007
  - app/views/decidim/account/_account_notification.js.erb
@@ -2520,6 +2544,7 @@ files:
2520
2544
  - db/migrate/20250613122148_remove_hashtag_table_from_core.rb
2521
2545
  - db/migrate/20250819110800_convert_private_exports_id_to_uuid.rb
2522
2546
  - db/migrate/20251031150928_add_short_name_to_organization.rb
2547
+ - db/migrate/20260909000000_add_failed_attempts_and_locked_at_to_decidim_authorizations.rb
2523
2548
  - db/seeds.rb
2524
2549
  - db/seeds/Exampledocument.pdf
2525
2550
  - db/seeds/avatars/001.jpg