decidim-generators 0.30.2 → 0.31.0.rc1

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 (26) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -0
  3. data/Gemfile.lock +377 -288
  4. data/lib/decidim/generators/app_generator.rb +39 -64
  5. data/lib/decidim/generators/app_templates/.node-version +1 -1
  6. data/lib/decidim/generators/app_templates/database.yml.erb +3 -3
  7. data/lib/decidim/generators/app_templates/dummy_signature_handler.rb +124 -0
  8. data/lib/decidim/generators/app_templates/dummy_signature_handler_form.html.erb +73 -0
  9. data/lib/decidim/generators/app_templates/dummy_sms_mobile_phone_validator.rb +11 -0
  10. data/lib/decidim/generators/app_templates/elections_initializer.rb +11 -0
  11. data/lib/decidim/generators/app_templates/initiatives_initializer.rb +54 -0
  12. data/lib/decidim/generators/app_templates/sidekiq.yml.erb +1 -1
  13. data/lib/decidim/generators/app_templates/storage.yml +42 -0
  14. data/lib/decidim/generators/component_templates/.node-version +1 -1
  15. data/lib/decidim/generators/component_templates/Gemfile.erb +2 -2
  16. data/lib/decidim/generators/component_templates/config/assets.rb.erb +3 -3
  17. data/lib/decidim/generators/component_templates/github/ci.yml.erb +2 -2
  18. data/lib/decidim/generators/component_templates/lib/decidim/component/engine.rb.erb +1 -1
  19. data/lib/decidim/generators/install_generator.rb +18 -21
  20. data/lib/decidim/generators/test/generator_examples.rb +24 -88
  21. data/lib/decidim/generators/version.rb +1 -1
  22. metadata +10 -8
  23. data/lib/decidim/generators/app_templates/ai_initializer.rb +0 -113
  24. data/lib/decidim/generators/app_templates/initializer.rb +0 -477
  25. data/lib/decidim/generators/app_templates/secrets.yml.erb +0 -190
  26. data/lib/decidim/generators/app_templates/storage.yml.erb +0 -42
@@ -1,477 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Decidim.configure do |config|
4
- # The name of the application
5
- config.application_name = Rails.application.secrets.decidim[:application_name]
6
-
7
- # The email that will be used as sender in all emails from Decidim
8
- config.mailer_sender = Rails.application.secrets.decidim[:mailer_sender]
9
-
10
- # Sets the list of available locales for the whole application.
11
- #
12
- # When an organization is created through the System area, system admins will
13
- # be able to choose the available languages for that organization. That list
14
- # of languages will be equal or a subset of the list in this file.
15
- config.available_locales = Rails.application.secrets.decidim[:available_locales].presence || [:en]
16
- # Or block set it up manually and prevent ENV manipulation:
17
- # config.available_locales = %w(en ca es)
18
-
19
- # Sets the default locale for new organizations. When creating a new
20
- # organization from the System area, system admins will be able to overwrite
21
- # this value for that specific organization.
22
- config.default_locale = Rails.application.secrets.decidim[:default_locale].presence || :en
23
-
24
- # Restrict access to the system part with an authorized ip list.
25
- # You can use a single ip like ("1.2.3.4"), or an ip subnet like ("1.2.3.4/24")
26
- # You may specify multiple ip in an array ["1.2.3.4", "1.2.3.4/24"]
27
- config.system_accesslist_ips = Rails.application.secrets.decidim[:system_accesslist_ips] if Rails.application.secrets.decidim[:system_accesslist_ips].present?
28
-
29
- # Defines a list of custom content processors. They are used to parse and
30
- # render specific tags inside some user-provided content. Check the docs for
31
- # more info.
32
- # config.content_processors = []
33
-
34
- # Whether SSL should be enabled or not.
35
- # if this var is not defined, it is decided automatically per-rails-environment
36
- config.force_ssl = Rails.application.secrets.decidim[:force_ssl].present? unless Rails.application.secrets.decidim[:force_ssl] == "auto"
37
- # or set it up manually and prevent any ENV manipulation:
38
- # config.force_ssl = true
39
-
40
- # Enable the service worker. By default is disabled in development and enabled in the rest of environments
41
- config.service_worker_enabled = Rails.application.secrets.decidim[:service_worker_enabled].present?
42
-
43
- # Sets the list of static pages' slugs that can include content blocks.
44
- # By default is only enabled in the terms-of-service static page to allow a summary to be added and include
45
- # sections with a two-pane view
46
- config.page_blocks = Rails.application.secrets.decidim[:page_blocks].presence || %w(terms-of-service)
47
-
48
- # Map and Geocoder configuration
49
- #
50
- # See Decidim docs at https://docs.decidim.org/en/develop/services/maps.html
51
- # for more information about how it works and how to set it up.
52
- #
53
- # == HERE Maps ==
54
- # config.maps = {
55
- # provider: :here,
56
- # api_key: Rails.application.secrets.maps[:api_key],
57
- # static: { url: "https://image.maps.hereapi.com/mia/v3/base/mc/overlay" }
58
- # }
59
- #
60
- # == OpenStreetMap (OSM) services ==
61
- # To use the OSM map service providers, you will need a service provider for
62
- # the following map servers or host all of them yourself:
63
- # - A tile server for the dynamic maps
64
- # (https://wiki.openstreetmap.org/wiki/Tile_servers)
65
- # - A Nominatim geocoding server for the geocoding functionality
66
- # (https://wiki.openstreetmap.org/wiki/Nominatim)
67
- # - A static map server for static map images
68
- # (https://github.com/jperelli/osm-static-maps)
69
- #
70
- # When used, please read carefully the terms of service for your service
71
- # provider.
72
- #
73
- # config.maps = {
74
- # provider: :osm,
75
- # api_key: Rails.application.secrets.maps[:api_key],
76
- # dynamic: {
77
- # tile_layer: {
78
- # url: "https://tiles.example.org/{z}/{x}/{y}.png?key={apiKey}&{foo}",
79
- # api_key: true,
80
- # foo: "bar=baz",
81
- # attribution: %(
82
- # <a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap</a> contributors
83
- # ).strip
84
- # # Translatable attribution:
85
- # # attribution: -> { I18n.t("tile_layer_attribution") }
86
- # }
87
- # },
88
- # static: { url: "https://staticmap.example.org/" },
89
- # geocoding: { host: "nominatim.example.org", use_https: true }
90
- # }
91
- #
92
- # == Combination (OpenStreetMap default + HERE Maps dynamic map tiles) ==
93
- # config.maps = {
94
- # provider: :osm,
95
- # api_key: Rails.application.secrets.maps[:api_key],
96
- # dynamic: {
97
- # provider: :here,
98
- # api_key: Rails.application.secrets.maps[:here_api_key]
99
- # },
100
- # static: { url: "https://staticmap.example.org/" },
101
- # geocoding: { host: "nominatim.example.org", use_https: true }
102
- # }
103
-
104
- # Geocoder configurations if you want to customize the default geocoding
105
- # settings. The maps configuration will manage which geocoding service to use,
106
- # so that does not need any additional configuration here. Use this only for
107
- # the global geocoder preferences.
108
- # config.geocoder = {
109
- # # geocoding service request timeout, in seconds (default 3):
110
- # timeout: 5,
111
- # # set default units to kilometers:
112
- # units: :km,
113
- # # caching (see https://github.com/alexreisner/geocoder#caching for details):
114
- # cache: Redis.new,
115
- # cache_prefix: "..."
116
- # }
117
- if Rails.application.secrets.maps.present? && Rails.application.secrets.maps[:static_provider].present?
118
- static_provider = Rails.application.secrets.maps[:static_provider]
119
- dynamic_provider = Rails.application.secrets.maps[:dynamic_provider]
120
- dynamic_url = Rails.application.secrets.maps[:dynamic_url]
121
- static_url = Rails.application.secrets.maps[:static_url]
122
- static_url = "https://image.maps.hereapi.com/mia/v3/base/mc/overlay" if static_provider == "here"
123
- config.maps = {
124
- provider: static_provider,
125
- api_key: Rails.application.secrets.maps[:static_api_key],
126
- static: { url: static_url },
127
- dynamic: {
128
- provider: dynamic_provider,
129
- api_key: Rails.application.secrets.maps[:dynamic_api_key]
130
- }
131
- }
132
- config.maps[:geocoding] = { host: Rails.application.secrets.maps[:geocoding_host], use_https: true } if Rails.application.secrets.maps[:geocoding_host]
133
- config.maps[:dynamic][:tile_layer] = {}
134
- config.maps[:dynamic][:tile_layer][:url] = dynamic_url if dynamic_url
135
- config.maps[:dynamic][:tile_layer][:attribution] = Rails.application.secrets.maps[:attribution] if Rails.application.secrets.maps[:attribution]
136
- if Rails.application.secrets.maps[:extra_vars].present?
137
- vars = URI.decode_www_form(Rails.application.secrets.maps[:extra_vars])
138
- vars.each do |key, value|
139
- # perform a naive type conversion
140
- config.maps[:dynamic][:tile_layer][key] = case value
141
- when /^true$|^false$/i
142
- value.downcase == "true"
143
- when /\A[-+]?\d+\z/
144
- value.to_i
145
- else
146
- value
147
- end
148
- end
149
- end
150
- end
151
-
152
- # Custom resource reference generator method. Check the docs for more info.
153
- # config.reference_generator = lambda do |resource, component|
154
- # # Implement your custom method to generate resources references
155
- # "1234-#{resource.id}"
156
- # end
157
-
158
- # Currency unit
159
- config.currency_unit = Rails.application.secrets.decidim[:currency_unit] if Rails.application.secrets.decidim[:currency_unit].present?
160
-
161
- # Workaround to enable SVG assets cors
162
- config.cors_enabled = Rails.application.secrets.decidim[:cors_enabled].present?
163
-
164
- # Defines the quality of image uploads after processing. Image uploads are
165
- # processed by Decidim, this value helps reduce the size of the files.
166
- config.image_uploader_quality = Rails.application.secrets.decidim[:image_uploader_quality].to_i
167
-
168
- config.maximum_attachment_size = Rails.application.secrets.decidim[:maximum_attachment_size].to_i.megabytes
169
- config.maximum_avatar_size = Rails.application.secrets.decidim[:maximum_avatar_size].to_i.megabytes
170
-
171
- # The number of reports which a resource can receive before hiding it
172
- config.max_reports_before_hiding = Rails.application.secrets.decidim[:max_reports_before_hiding].to_i
173
-
174
- # Custom HTML Header snippets
175
- #
176
- # The most common use is to integrate third-party services that require some
177
- # extra JavaScript or CSS. Also, you can use it to add extra meta tags to the
178
- # HTML. Note that this will only be rendered in public pages, not in the admin
179
- # section.
180
- #
181
- # Before enabling this you should ensure that any tracking that might be done
182
- # is in accordance with the rules and regulations that apply to your
183
- # environment and usage scenarios. This component also comes with the risk
184
- # that an organization's administrator injects malicious scripts to spy on or
185
- # take over user accounts.
186
- #
187
- config.enable_html_header_snippets = Rails.application.secrets.decidim[:enable_html_header_snippets].present?
188
-
189
- # Allow organizations admins to track newsletter links.
190
- config.track_newsletter_links = Rails.application.secrets.decidim[:track_newsletter_links].present? unless Rails.application.secrets.decidim[:track_newsletter_links] == "auto"
191
-
192
- # Amount of time that the download your data files will be available in the server.
193
- config.download_your_data_expiry_time = Rails.application.secrets.decidim[:download_your_data_expiry_time].to_i.days
194
-
195
- # Max requests in a time period to prevent DoS attacks. Only applied on production.
196
- config.throttling_max_requests = Rails.application.secrets.decidim[:throttling_max_requests].to_i
197
-
198
- # Time window in which the throttling is applied.
199
- config.throttling_period = Rails.application.secrets.decidim[:throttling_period].to_i.minutes
200
-
201
- # Time window were users can access the website even if their email is not confirmed.
202
- config.unconfirmed_access_for = Rails.application.secrets.decidim[:unconfirmed_access_for].to_i.days
203
-
204
- # A base path for the uploads. If set, make sure it ends in a slash.
205
- # Uploads will be set to `<base_path>/uploads/`. This can be useful if you
206
- # want to use the same uploads place for both staging and production
207
- # environments, but in different folders.
208
- #
209
- # If not set, it will be ignored.
210
- config.base_uploads_path = Rails.application.secrets.decidim[:base_uploads_path] if Rails.application.secrets.decidim[:base_uploads_path].present?
211
-
212
- # SMS gateway configuration
213
- #
214
- # If you want to verify your users by sending a verification code via
215
- # SMS you need to provide a SMS gateway service class.
216
- #
217
- # An example class would be something like:
218
- #
219
- # class MySMSGatewayService
220
- # attr_reader :mobile_phone_number, :code
221
- #
222
- # def initialize(mobile_phone_number, code)
223
- # @mobile_phone_number = mobile_phone_number
224
- # @code = code
225
- # end
226
- #
227
- # def deliver_code
228
- # # Actual code to deliver the code
229
- # true
230
- # end
231
- # end
232
- #
233
- # config.sms_gateway_service = "MySMSGatewayService"
234
-
235
- # Timestamp service configuration
236
- #
237
- # Provide a class to generate a timestamp for a document. The instances of
238
- # this class are initialized with a hash containing the :document key with
239
- # the document to be timestamped as value. The instances respond to a
240
- # timestamp public method with the timestamp
241
- #
242
- # An example class would be something like:
243
- #
244
- # class MyTimestampService
245
- # attr_accessor :document
246
- #
247
- # def initialize(args = {})
248
- # @document = args.fetch(:document)
249
- # end
250
- #
251
- # def timestamp
252
- # # Code to generate timestamp
253
- # "My timestamp"
254
- # end
255
- # end
256
- #
257
- #
258
- # config.timestamp_service = "MyTimestampService"
259
-
260
- # PDF signature service configuration
261
- #
262
- # Provide a class to process a pdf and return the document including a
263
- # digital signature. The instances of this class are initialized with a hash
264
- # containing the :pdf key with the pdf file content as value. The instances
265
- # respond to a signed_pdf method containing the pdf with the signature
266
- #
267
- # An example class would be something like:
268
- #
269
- # class MyPDFSignatureService
270
- # attr_accessor :pdf
271
- #
272
- # def initialize(args = {})
273
- # @pdf = args.fetch(:pdf)
274
- # end
275
- #
276
- # def signed_pdf
277
- # # Code to return the pdf signed
278
- # end
279
- # end
280
- #
281
- # config.pdf_signature_service = "MyPDFSignatureService"
282
-
283
- # Etherpad configuration
284
- #
285
- # Only needed if you want to have Etherpad integration with Decidim. See
286
- # Decidim docs at https://docs.decidim.org/en/services/etherpad/ in order to set it up.
287
- #
288
- if Rails.application.secrets.etherpad.present? && Rails.application.secrets.etherpad[:server].present?
289
- config.etherpad = {
290
- server: Rails.application.secrets.etherpad[:server],
291
- api_key: Rails.application.secrets.etherpad[:api_key],
292
- api_version: Rails.application.secrets.etherpad[:api_version]
293
- }
294
- end
295
-
296
- # Sets Decidim::Exporters::CSV's default column separator
297
- config.default_csv_col_sep = Rails.application.secrets.decidim[:default_csv_col_sep] if Rails.application.secrets.decidim[:default_csv_col_sep].present?
298
-
299
- # The list of roles a user can have, not considering the space-specific roles.
300
- # config.user_roles = %w(admin user_manager)
301
-
302
- # The list of visibility options for amendments. An Array of Strings that
303
- # serve both as locale keys and values to construct the input collection in
304
- # Decidim::Amendment::VisibilityStepSetting::options.
305
- #
306
- # This collection is used in Decidim::Admin::SettingsHelper to generate a
307
- # radio buttons collection input field form for a Decidim::Component
308
- # step setting :amendments_visibility.
309
- # config.amendments_visibility_options = %w(all participants)
310
-
311
- # Machine Translation Configuration
312
- #
313
- # See Decidim docs at https://docs.decidim.org/en/develop/machine_translations/
314
- # for more information about how it works and how to set it up.
315
- #
316
- # Enable machine translations
317
- config.enable_machine_translations = false
318
- #
319
- # If you want to enable machine translation you can create your own service
320
- # to interact with third party service to translate the user content.
321
- #
322
- # If you still want to use "Decidim::Dev::DummyTranslator" as translator placeholder,
323
- # add the following line at the beginning of this file:
324
- # require "decidim/dev/dummy_translator"
325
- #
326
- # An example class would be something like:
327
- #
328
- # class MyTranslationService
329
- # attr_reader :text, :original_locale, :target_locale
330
- #
331
- # def initialize(text, original_locale, target_locale)
332
- # @text = text
333
- # @original_locale = original_locale
334
- # @target_locale = target_locale
335
- # end
336
- #
337
- # def translate
338
- # # Actual code to translate the text
339
- # end
340
- # end
341
- #
342
- # config.machine_translation_service = "MyTranslationService"
343
-
344
- # Defines the social networking services used for social sharing
345
- config.social_share_services = Rails.application.secrets.decidim[:social_share_services]
346
-
347
- # Defines the name of the cookie used to check if the user allows Decidim to
348
- # set cookies.
349
- config.consent_cookie_name = Rails.application.secrets.decidim[:consent_cookie_name] if Rails.application.secrets.decidim[:consent_cookie_name].present?
350
-
351
- # Defines data consent categories and the data stored in each category.
352
- # config.consent_categories = [
353
- # {
354
- # slug: "essential",
355
- # mandatory: true,
356
- # items: [
357
- # {
358
- # type: "cookie",
359
- # name: "_session_id"
360
- # },
361
- # {
362
- # type: "cookie",
363
- # name: Decidim.consent_cookie_name
364
- # }
365
- # ]
366
- # },
367
- # {
368
- # slug: "preferences",
369
- # mandatory: false
370
- # },
371
- # {
372
- # slug: "analytics",
373
- # mandatory: false
374
- # },
375
- # {
376
- # slug: "marketing",
377
- # mandatory: false
378
- # }
379
- # ]
380
-
381
- # Defines additional content security policies following the structure
382
- # Read more: https://docs.decidim.org/en/develop/configure/initializer#_content_security_policy
383
- config.content_security_policies_extra = {}
384
-
385
- # Admin admin password configurations
386
- Rails.application.secrets.dig(:decidim, :admin_password, :strong).tap do |strong_pw|
387
- # When the strong password is not configured, default to true
388
- config.admin_password_strong = strong_pw.nil? ? true : strong_pw.present?
389
- end
390
- config.admin_password_expiration_days = Rails.application.secrets.dig(:decidim, :admin_password, :expiration_days).presence || 90
391
- config.admin_password_min_length = Rails.application.secrets.dig(:decidim, :admin_password, :min_length).presence || 15
392
- config.admin_password_repetition_times = Rails.application.secrets.dig(:decidim, :admin_password, :repetition_times).presence || 5
393
-
394
- # Additional optional configurations (see decidim-core/lib/decidim/core.rb)
395
- config.cache_key_separator = Rails.application.secrets.decidim[:cache_key_separator] if Rails.application.secrets.decidim[:cache_key_separator].present?
396
- config.cache_expiry_time = Rails.application.secrets.decidim[:cache_expiry_time].to_i.minutes if Rails.application.secrets.decidim[:cache_expiry_time].present?
397
- config.stats_cache_expiry_time = Rails.application.secrets.decidim[:stats_cache_expiry_time].to_i.minutes if Rails.application.secrets.decidim[:stats_cache_expiry_time].present?
398
- config.expire_session_after = Rails.application.secrets.decidim[:expire_session_after].to_i.minutes if Rails.application.secrets.decidim[:expire_session_after].present?
399
- config.enable_remember_me = Rails.application.secrets.decidim[:enable_remember_me].present? unless Rails.application.secrets.decidim[:enable_remember_me] == "auto"
400
- if Rails.application.secrets.decidim[:session_timeout_interval].present?
401
- config.session_timeout_interval = Rails.application.secrets.decidim[:session_timeout_interval].to_i.seconds
402
- end
403
- config.follow_http_x_forwarded_host = Rails.application.secrets.decidim[:follow_http_x_forwarded_host].present?
404
- config.maximum_conversation_message_length = Rails.application.secrets.decidim[:maximum_conversation_message_length].to_i
405
- config.password_similarity_length = Rails.application.secrets.decidim[:password_similarity_length] if Rails.application.secrets.decidim[:password_similarity_length].present?
406
- config.denied_passwords = Rails.application.secrets.decidim[:denied_passwords] if Rails.application.secrets.decidim[:denied_passwords].present?
407
- config.allow_open_redirects = Rails.application.secrets.decidim[:allow_open_redirects] if Rails.application.secrets.decidim[:allow_open_redirects].present?
408
- config.enable_etiquette_validator = Rails.application.secrets.decidim[:enable_etiquette_validator] if Rails.application.secrets.decidim[:enable_etiquette_validator].present?
409
- end
410
-
411
- if Decidim.module_installed? :api
412
- Decidim::Api.configure do |config|
413
- config.schema_max_per_page = Rails.application.secrets.dig(:decidim, :api, :schema_max_per_page).presence || 50
414
- config.schema_max_complexity = Rails.application.secrets.dig(:decidim, :api, :schema_max_complexity).presence || 5000
415
- config.schema_max_depth = Rails.application.secrets.dig(:decidim, :api, :schema_max_depth).presence || 15
416
- end
417
- end
418
-
419
- if Decidim.module_installed? :proposals
420
- Decidim::Proposals.configure do |config|
421
- config.participatory_space_highlighted_proposals_limit = Rails.application.secrets.dig(:decidim, :proposals, :participatory_space_highlighted_proposals_limit).presence || 4
422
- config.process_group_highlighted_proposals_limit = Rails.application.secrets.dig(:decidim, :proposals, :process_group_highlighted_proposals_limit).presence || 3
423
- end
424
- end
425
-
426
- if Decidim.module_installed? :meetings
427
- Decidim::Meetings.configure do |config|
428
- config.upcoming_meeting_notification = Rails.application.secrets.dig(:decidim, :meetings, :upcoming_meeting_notification).to_i.days
429
- if Rails.application.secrets.dig(:decidim, :meetings, :embeddable_services).present?
430
- config.embeddable_services = Rails.application.secrets.dig(:decidim, :meetings, :embeddable_services)
431
- end
432
- unless Rails.application.secrets.dig(:decidim, :meetings, :enable_proposal_linking) == "auto"
433
- config.enable_proposal_linking = Rails.application.secrets.dig(:decidim, :meetings, :enable_proposal_linking).present?
434
- end
435
- end
436
- end
437
-
438
- if Decidim.module_installed? :budgets
439
- Decidim::Budgets.configure do |config|
440
- unless Rails.application.secrets.dig(:decidim, :budgets, :enable_proposal_linking) == "auto"
441
- config.enable_proposal_linking = Rails.application.secrets.dig(:decidim, :budgets, :enable_proposal_linking).present?
442
- end
443
- end
444
- end
445
-
446
- if Decidim.module_installed? :accountability
447
- Decidim::Accountability.configure do |config|
448
- unless Rails.application.secrets.dig(:decidim, :accountability, :enable_proposal_linking) == "auto"
449
- config.enable_proposal_linking = Rails.application.secrets.dig(:decidim, :accountability, :enable_proposal_linking).present?
450
- end
451
- end
452
- end
453
-
454
- if Decidim.module_installed? :initiatives
455
- Decidim::Initiatives.configure do |config|
456
- unless Rails.application.secrets.dig(:decidim, :initiatives, :creation_enabled) == "auto"
457
- config.creation_enabled = Rails.application.secrets.dig(:decidim, :initiatives, :creation_enabled).present?
458
- end
459
- config.minimum_committee_members = Rails.application.secrets.dig(:decidim, :initiatives, :minimum_committee_members).presence || 2
460
- config.default_signature_time_period_length = Rails.application.secrets.dig(:decidim, :initiatives, :default_signature_time_period_length).presence || 120
461
- config.default_components = Rails.application.secrets.dig(:decidim, :initiatives, :default_components)
462
- config.first_notification_percentage = Rails.application.secrets.dig(:decidim, :initiatives, :first_notification_percentage).presence || 33
463
- config.second_notification_percentage = Rails.application.secrets.dig(:decidim, :initiatives, :second_notification_percentage).presence || 66
464
- config.stats_cache_expiration_time = Rails.application.secrets.dig(:decidim, :initiatives, :stats_cache_expiration_time).to_i.minutes
465
- config.max_time_in_validating_state = Rails.application.secrets.dig(:decidim, :initiatives, :max_time_in_validating_state).to_i.days
466
- unless Rails.application.secrets.dig(:decidim, :initiatives, :print_enabled) == "auto"
467
- config.print_enabled = Rails.application.secrets.dig(:decidim, :initiatives, :print_enabled).present?
468
- end
469
- config.do_not_require_authorization = Rails.application.secrets.dig(:decidim, :initiatives, :do_not_require_authorization).present?
470
- end
471
- end
472
-
473
- Rails.application.config.i18n.available_locales = Decidim.available_locales
474
- Rails.application.config.i18n.default_locale = Decidim.default_locale
475
-
476
- # Inform Decidim about the assets folder
477
- Decidim.register_assets_path File.expand_path("app/packs", Rails.application.root)
@@ -1,190 +0,0 @@
1
- # Be sure to restart your server when you modify this file.
2
-
3
- # Your secret key is used for verifying the integrity of signed cookies.
4
- # If you change this key, all old signed cookies will become invalid!
5
-
6
- # Make sure the secret is at least 30 characters and all random,
7
- # no regular words or you will be exposed to dictionary attacks.
8
- # You can use `rails secret` to generate a secure secret key.
9
-
10
- # Make sure the secrets in this file are kept private
11
- # if you are sharing your code publicly.
12
-
13
- decidim_default: &decidim_default
14
- application_name: <%%= Decidim::Env.new("DECIDIM_APPLICATION_NAME", "My Application Name").to_json %>
15
- mailer_sender: <%%= Decidim::Env.new("DECIDIM_MAILER_SENDER", "change-me@example.org").to_s %>
16
- available_locales: <%%= Decidim::Env.new("DECIDIM_AVAILABLE_LOCALES", "ca,cs,de,en,es,eu,fi,fr,it,ja,nl,pl,pt,ro").to_array.to_json %>
17
- default_locale: <%%= Decidim::Env.new("DECIDIM_DEFAULT_LOCALE", "en").to_s %>
18
- force_ssl: <%%= Decidim::Env.new("DECIDIM_FORCE_SSL", "auto").default_or_present_if_exists.to_s %>
19
- enable_html_header_snippets: <%%= Decidim::Env.new("DECIDIM_ENABLE_HTML_HEADER_SNIPPETS").to_boolean_string %>
20
- currency_unit: <%%= Decidim::Env.new("DECIDIM_CURRENCY_UNIT", "€").to_s %>
21
- cors_enabled: <%%= Decidim::Env.new("DECIDIM_CORS_ENABLED").to_boolean_string %>
22
- image_uploader_quality: <%%= Decidim::Env.new("DECIDIM_IMAGE_UPLOADER_QUALITY", "80").to_i %>
23
- maximum_attachment_size: <%%= Decidim::Env.new("DECIDIM_MAXIMUM_ATTACHMENT_SIZE", "10").to_i %>
24
- maximum_avatar_size: <%%= Decidim::Env.new("DECIDIM_MAXIMUM_AVATAR_SIZE", "5").to_i %>
25
- max_reports_before_hiding: <%%= Decidim::Env.new("DECIDIM_MAX_REPORTS_BEFORE_HIDING", "3").to_i %>
26
- track_newsletter_links: <%%= Decidim::Env.new("DECIDIM_TRACK_NEWSLETTER_LINKS", "auto").default_or_present_if_exists.to_s %>
27
- download_your_data_expiry_time: <%%= Decidim::Env.new("DECIDIM_DOWNLOAD_YOUR_DATA_EXPIRY_TIME", "7").to_i %>
28
- throttling_max_requests: <%%= Decidim::Env.new("DECIDIM_THROTTLING_MAX_REQUESTS", "100").to_i %>
29
- throttling_period: <%%= Decidim::Env.new("DECIDIM_THROTTLING_PERIOD", "1").to_i %>
30
- unconfirmed_access_for: <%%= Decidim::Env.new("DECIDIM_UNCONFIRMED_ACCESS_FOR", "0").to_i %>
31
- system_accesslist_ips: <%%= Decidim::Env.new("DECIDIM_SYSTEM_ACCESSLIST_IPS").to_array.to_json %>
32
- base_uploads_path: <%%= Decidim::Env.new("DECIDIM_BASE_UPLOADS_PATH").to_json %>
33
- default_csv_col_sep: <%%= Decidim::Env.new("DECIDIM_DEFAULT_CSV_COL_SEP", ";").to_json %>
34
- consent_cookie_name: <%%= Decidim::Env.new("DECIDIM_CONSENT_COOKIE_NAME", "decidim-consent").to_json %>
35
- cache_key_separator: <%%= Decidim::Env.new("DECIDIM_CACHE_KEY_SEPARATOR", "/").to_json %>
36
- cache_expiry_time: <%%= Decidim::Env.new("DECIDIM_CACHE_EXPIRATION_TIME", "1440").to_i %>
37
- stats_cache_expiry_time: <%%= Decidim::Env.new("DECIDIM_STATS_CACHE_EXPIRATION_TIME", 10).to_i %>
38
- expire_session_after: <%%= Decidim::Env.new("DECIDIM_EXPIRE_SESSION_AFTER", "30").to_i %>
39
- session_timeout_interval: <%%= Decidim::Env.new("DECIDIM_SESSION_TIMEOUT_INTERVAL", "10").to_i %>
40
- enable_remember_me: <%%= Decidim::Env.new("DECIDIM_ENABLE_REMEMBER_ME", "auto").default_or_present_if_exists.to_s %>
41
- follow_http_x_forwarded_host: <%%= Decidim::Env.new("DECIDIM_FOLLOW_HTTP_X_FORWARDED_HOST").to_boolean_string %>
42
- maximum_conversation_message_length: <%%= Decidim::Env.new("DECIDIM_MAXIMUM_CONVERSATION_MESSAGE_LENGTH", "1000").to_i %>
43
- password_similarity_length: <%%= Decidim::Env.new("DECIDIM_PASSWORD_SIMILARITY_LENGTH", 4).to_i %>
44
- denied_passwords: <%%= Decidim::Env.new("DECIDIM_DENIED_PASSWORDS").to_array(separator: ", ").to_json %>
45
- allow_open_redirects: <%%= Decidim::Env.new("DECIDIM_ALLOW_OPEN_REDIRECTS").to_boolean_string %>
46
- social_share_services: <%%= Decidim::Env.new("DECIDIM_SOCIAL_SHARE_SERVICES", "X, Facebook, WhatsApp, Telegram").to_array.to_json %>
47
- service_worker_enabled: <%%= Decidim::Env.new("DECIDIM_SERVICE_WORKER_ENABLED", Rails.env.exclude?("development")).to_boolean_string %>
48
- page_blocks: <%%= Decidim::Env.new("DECIDIM_PAGE_BLOCKS", "terms-of-service").to_array %>
49
- enable_etiquette_validator: <%%= Decidim::Env.new("DECIDIM_ENABLE_ETIQUETTE_VALIDATOR", true).to_boolean_string %>
50
- admin_password:
51
- expiration_days: <%%= Decidim::Env.new("DECIDIM_ADMIN_PASSWORD_EXPIRATION_DAYS", 90).to_i %>
52
- min_length: <%%= Decidim::Env.new("DECIDIM_ADMIN_PASSWORD_MIN_LENGTH", 15).to_i %>
53
- repetition_times: <%%= Decidim::Env.new("DECIDIM_ADMIN_PASSWORD_REPETITION_TIMES", 5).to_i %>
54
- strong: <%%= Decidim::Env.new("DECIDIM_ADMIN_PASSWORD_STRONG", true).to_boolean_string %>
55
- api:
56
- schema_max_per_page: <%%= Decidim::Env.new("API_SCHEMA_MAX_PER_PAGE", 50).to_i %>
57
- schema_max_complexity: <%%= Decidim::Env.new("API_SCHEMA_MAX_COMPLEXITY", 5000).to_i %>
58
- schema_max_depth: <%%= Decidim::Env.new("API_SCHEMA_MAX_DEPTH", 15).to_i %>
59
- proposals:
60
- participatory_space_highlighted_proposals_limit: <%%= Decidim::Env.new("PROPOSALS_PARTICIPATORY_SPACE_HIGHLIGHTED_PROPOSALS_LIMIT", 4).to_i %>
61
- process_group_highlighted_proposals_limit: <%%= Decidim::Env.new("PROPOSALS_PROCESS_GROUP_HIGHLIGHTED_PROPOSALS_LIMIT", 3).to_i %>
62
- meetings:
63
- upcoming_meeting_notification: <%%= Decidim::Env.new("MEETINGS_UPCOMING_MEETING_NOTIFICATION", 2).to_i %>
64
- enable_proposal_linking: <%%= Decidim::Env.new("MEETINGS_ENABLE_PROPOSAL_LINKING", "auto").default_or_present_if_exists.to_s %>
65
- embeddable_services: <%%= Decidim::Env.new("MEETINGS_EMBEDDABLE_SERVICES").to_array(separator: " ").to_json %>
66
- budgets:
67
- enable_proposal_linking: <%%= Decidim::Env.new("BUDGETS_ENABLE_PROPOSAL_LINKING", "auto").default_or_present_if_exists.to_s %>
68
- accountability:
69
- enable_proposal_linking: <%%= Decidim::Env.new("ACCOUNTABILITY_ENABLE_PROPOSAL_LINKING", "auto").default_or_present_if_exists.to_s %>
70
- initiatives:
71
- creation_enabled: <%%= Decidim::Env.new("INITIATIVES_CREATION_ENABLED", "auto").default_or_present_if_exists.to_s %>
72
- minimum_committee_members: <%%= Decidim::Env.new("INITIATIVES_MINIMUM_COMMITTEE_MEMBERS", 2).to_i %>
73
- default_signature_time_period_length: <%%= Decidim::Env.new("INITIATIVES_DEFAULT_SIGNATURE_TIME_PERIOD_LENGTH", 120).to_i %>
74
- default_components: <%%= Decidim::Env.new("INITIATIVES_DEFAULT_COMPONENTS", "pages, meetings, blogs").to_array.to_json %>
75
- first_notification_percentage: <%%= Decidim::Env.new("INITIATIVES_FIRST_NOTIFICATION_PERCENTAGE", 33).to_i %>
76
- second_notification_percentage: <%%= Decidim::Env.new("INITIATIVES_SECOND_NOTIFICATION_PERCENTAGE", 66).to_i %>
77
- stats_cache_expiration_time: <%%= Decidim::Env.new("INITIATIVES_STATS_CACHE_EXPIRATION_TIME", 5).to_i %>
78
- max_time_in_validating_state: <%%= Decidim::Env.new("INITIATIVES_MAX_TIME_IN_VALIDATING_STATE", 60).to_i %>
79
- print_enabled: <%%= Decidim::Env.new("INITIATIVES_PRINT_ENABLED", "auto").default_or_present_if_exists.to_s %>
80
- do_not_require_authorization: <%%= Decidim::Env.new("INITIATIVES_DO_NOT_REQUIRE_AUTHORIZATION").to_boolean_string %>
81
- verifications:
82
- document_types: <%%= Decidim::Env.new("VERIFICATIONS_DOCUMENT_TYPES", "identification_number,passport").to_array %>
83
-
84
- storage_default: &storage_default
85
- provider: <%%= Decidim::Env.new("STORAGE_PROVIDER", "local").to_s %>
86
- cdn_host: <%%= ENV["STORAGE_CDN_HOST"] %>
87
- s3:
88
- access_key_id: <%%= ENV["AWS_ACCESS_KEY_ID"] %>
89
- secret_access_key: <%%= ENV["AWS_SECRET_ACCESS_KEY"] %>
90
- region: <%%= ENV["AWS_REGION"] %>
91
- bucket: <%%= ENV["AWS_BUCKET"] %>
92
- endpoint: <%%= ENV["AWS_ENDPOINT"] %>
93
- azure:
94
- storage_access_key: <%%= ENV["AZURE_STORAGE_ACCESS_KEY"] %>
95
- storage_account_name: <%%= ENV["AZURE_STORAGE_ACCOUNT_NAME"] %>
96
- container: <%%= ENV["AZURE_CONTAINER"] %>
97
- gcs:
98
- project: <%%= ENV["GCS_PROJECT"] %>
99
- bucket: <%%= ENV["GCS_BUCKET"] %>
100
- type: <%%= Decidim::Env.new("GCS_TYPE", "service_account").to_s %>
101
- project_id: <%%= Decidim::Env.new("GCS_PROJECT_ID").to_s %>
102
- private_key_id: <%%= Decidim::Env.new("GCS_PRIVATE_KEY_ID").to_s %>
103
- private_key: <%%= Decidim::Env.new("GCS_PRIVATE_KEY").to_s %>
104
- client_email: <%%= Decidim::Env.new("GCS_CLIENT_EMAIL").to_s %>
105
- client_id: <%%= Decidim::Env.new("GCS_CLIENT_ID").to_s %>
106
- auth_uri: <%%= Decidim::Env.new("GCS_AUTH_URI", "https://accounts.google.com/o/oauth2/auth").to_s %>
107
- token_uri: <%%= Decidim::Env.new("GCS_TOKEN_URI", "https://accounts.google.com/o/oauth2/token").to_s %>
108
- auth_provider_x509_cert_url: <%%= Decidim::Env.new("GCS_AUTH_PROVIDER_X509_CERT_URL", "https://www.googleapis.com/oauth2/v1/certs").to_s %>
109
- client_x509_cert_url: <%%= Decidim::Env.new("GCS_CLIENT_X509_CERT_URL").to_s %>
110
-
111
- default: &default
112
- decidim:
113
- <<: *decidim_default
114
- omniauth:
115
- google_oauth2:
116
- enabled: <%%= Decidim::Env.new("OMNIAUTH_GOOGLE_CLIENT_ID").to_boolean_string %>
117
- icon_path: "media/images/google.svg"
118
- client_id: <%%= ENV["OMNIAUTH_GOOGLE_CLIENT_ID"] %>
119
- client_secret: <%%= ENV["OMNIAUTH_GOOGLE_CLIENT_SECRET"] %>
120
- facebook:
121
- enabled: <%%= Decidim::Env.new("OMNIAUTH_FACEBOOK_APP_ID").to_boolean_string %>
122
- app_id: <%%= ENV["OMNIAUTH_FACEBOOK_APP_ID"] %>
123
- app_secret: <%%= ENV["OMNIAUTH_FACEBOOK_APP_SECRET"] %>
124
- icon_path: "media/images/facebook.svg"
125
- twitter:
126
- enabled: <%%= Decidim::Env.new("OMNIAUTH_TWITTER_API_KEY").to_boolean_string %>
127
- api_key: <%%= ENV["OMNIAUTH_TWITTER_API_KEY"] %>
128
- api_secret: <%%= ENV["OMNIAUTH_TWITTER_API_SECRET"] %>
129
- icon_path: "media/images/twitter-x.svg"
130
- maps:
131
- dynamic_provider: <%%= Decidim::Env.new("MAPS_DYNAMIC_PROVIDER", ENV["MAPS_PROVIDER"]).to_s %>
132
- static_provider: <%%= Decidim::Env.new("MAPS_STATIC_PROVIDER", ENV["MAPS_PROVIDER"]).to_s %>
133
- static_api_key: <%%= Decidim::Env.new("MAPS_STATIC_API_KEY", ENV["MAPS_API_KEY"]).to_s %>
134
- dynamic_api_key: <%%= Decidim::Env.new("MAPS_DYNAMIC_API_KEY", ENV["MAPS_API_KEY"]).to_s %>
135
- dynamic_url: <%%= ENV["MAPS_DYNAMIC_URL"] %>
136
- static_url: <%%= ENV["MAPS_STATIC_URL"] %>
137
- attribution: <%%= ENV["MAPS_ATTRIBUTION"].to_json %>
138
- extra_vars: <%%= ENV["MAPS_EXTRA_VARS"].to_json %>
139
- geocoding_host: <%%= ENV["MAPS_GEOCODING_HOST"] %>
140
- etherpad:
141
- server: <%%= ENV["ETHERPAD_SERVER"] %>
142
- api_key: <%%= ENV["ETHERPAD_API_KEY"] %>
143
- api_version: <%%= Decidim::Env.new("ETHERPAD_API_VERSION", "1.2.1") %>
144
- storage:
145
- <<: *storage_default
146
- vapid:
147
- enabled: <%%= Decidim::Env.new("VAPID_PUBLIC_KEY").to_boolean_string %>
148
- public_key: <%%= ENV["VAPID_PUBLIC_KEY"] %>
149
- private_key: <%%= ENV["VAPID_PRIVATE_KEY"] %>
150
-
151
- development:
152
- <<: *default
153
- secret_key_base: <%= SecureRandom.hex(64) %>
154
- omniauth:
155
- developer:
156
- enabled: true
157
- icon: phone-line
158
-
159
- test:
160
- <<: *default
161
- secret_key_base: <%= SecureRandom.hex(64) %>
162
- omniauth:
163
- facebook:
164
- enabled: true
165
- app_id: fake-facebook-app-id
166
- app_secret: fake-facebook-app-secret
167
- twitter:
168
- enabled: true
169
- api_key: fake-twitter-api-key
170
- api_secret: fake-twitter-api-secret
171
- google_oauth2:
172
- enabled: true
173
- client_id:
174
- client_secret:
175
- test:
176
- enabled: true
177
- icon: tools-line
178
-
179
- # Do not keep production secrets in the repository,
180
- # instead read values from the environment.
181
- production:
182
- <<: *default
183
- secret_key_base: <%%= ENV["SECRET_KEY_BASE"] %>
184
- smtp_username: <%%= ENV["SMTP_USERNAME"] %>
185
- smtp_password: <%%= ENV["SMTP_PASSWORD"] %>
186
- smtp_address: <%%= ENV["SMTP_ADDRESS"] %>
187
- smtp_domain: <%%= ENV["SMTP_DOMAIN"] %>
188
- smtp_port: <%%= Decidim::Env.new("SMTP_PORT", 587).to_i %>
189
- smtp_starttls_auto: <%%= Decidim::Env.new("SMTP_STARTTLS_AUTO").to_boolean_string %>
190
- smtp_authentication: <%%= Decidim::Env.new("SMTP_AUTHENTICATION", "plain").to_s %>