decidim-action_delegator 0.4.1 → 0.6.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c49c4f035221be196d24b71ff42164efc9df22276522bcfc551fb786cb6ec06f
4
- data.tar.gz: e25c82f314a0aa80f42dfba62ecc9967bb5118accb0c270113b629a92ae79e1b
3
+ metadata.gz: e59c6c3255e7033322ffc666d12b6240780fda1dba0592dc23d667bf21a7d6d1
4
+ data.tar.gz: 00b9b73c81a640f0921123488b4e2b7f7b50d4c38cc16af211af865624a37522
5
5
  SHA512:
6
- metadata.gz: 40f9793f2b9448286f87a0444b17e782b91a8e8011b2c458ace651710ede9c4390682112654b9ea084589b200486b0c3c9a6816fc05363470b088f2d8b7d0f86
7
- data.tar.gz: b5366fefda7cfef045fe1479d5c59e2fd3887d78c10844d0f9756e04a3c014b8299c717797ac49150415e37be1d45b4b65705da983faa66adc9214c52bb44a49
6
+ metadata.gz: eb126fcab4a393913260415dbaf2ca87fa64f850f9da03c45b71a344bca58887bab7550e66dd4872b803436c54ad464fcc934529f948f9e2dce60da18749f5fb
7
+ data.tar.gz: 3514cc388e212c611ffbd3baff182c68caa9dd07f7b45977814e30e8b0fb1bb2c7dd82595fc239c93053e74f54b4c0d2f0932b0aacd01da4daf23ac3f98932c8
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Decidim::ActionDelegator
2
2
 
3
- ![[CI] Build](https://github.com/coopdevs/decidim-module-action_delegator/workflows/%5BCI%5D%20Build/badge.svg)
3
+ [![Test](https://github.com/coopdevs/decidim-module-action_delegator/actions/workflows/test.yml/badge.svg)](https://github.com/coopdevs/decidim-module-action_delegator/actions/workflows/test.yml)
4
4
  [![Maintainability](https://api.codeclimate.com/v1/badges/6ec3c39e8dc2075808e1/maintainability)](https://codeclimate.com/github/coopdevs/decidim-module-action_delegator/maintainability)
5
5
  [![Codecov](https://codecov.io/gh/coopdevs/decidim-module-action_delegator/branch/master/graph/badge.svg)](https://codecov.io/gh/coopdevs/decidim-module-action_delegator)
6
6
 
@@ -39,6 +39,8 @@ Depending on your Decidim version, choose the corresponding version to ensure co
39
39
 
40
40
  | Version | Compatible Decidim versions |
41
41
  |---|---|
42
+ | 0.6 | 0.26.x |
43
+ | 0.5 | 0.25.x |
42
44
  | 0.4 | 0.24.x |
43
45
  | 0.3 | 0.24.x |
44
46
  | 0.2 | 0.23.x |
@@ -188,7 +190,11 @@ To run the tests run the following in the gem development path:
188
190
 
189
191
  ```bash
190
192
  bundle
191
- DATABASE_USERNAME=<username> DATABASE_PASSWORD=<password> bundle exec rake test_app
193
+ DATABASE_USERNAME=<username> DATABASE_PASSWORD=<password> bundle exec rake decidim:generate_external_test_app
194
+ cd spec/decidim_dummy_app
195
+ bundle exec rails decidim_action_delegator:install:migrations
196
+ RAILS_ENV=test bundle exec rails db:migrate
197
+ cd -
192
198
  DATABASE_USERNAME=<username> DATABASE_PASSWORD=<password> bundle exec rspec
193
199
  ```
194
200
 
@@ -0,0 +1 @@
1
+ @import "stylesheets/decidim/action_delegator/questions.scss"
@@ -0,0 +1 @@
1
+ import "src/decidim/action_delegator/admin/action_delegator.js.es6";
@@ -0,0 +1,3 @@
1
+ require.context("../images", true)
2
+
3
+ import "entrypoints/decidim_action_delegator.scss";
@@ -0,0 +1 @@
1
+ import "src/decidim/action_delegator/questions.js.es6";
@@ -7,7 +7,7 @@ edit_link(
7
7
  )
8
8
  %>
9
9
 
10
- <%= stylesheet_link_tag "decidim/action_delegator/questions" %>
10
+ <%= stylesheet_pack_tag "decidim_action_delegator_questions" %>
11
11
 
12
12
  <%= render partial: "consultation_details", locals: { consultation: current_consultation } %>
13
13
  <%= render partial: "highlighted_questions", locals: { consultation: current_consultation } %>
@@ -1,5 +1,5 @@
1
- <%= stylesheet_link_tag "decidim/action_delegator/questions" %>
2
- <%= javascript_include_tag "decidim/action_delegator/questions" %>
1
+ <%= stylesheet_pack_tag "decidim_action_delegator_questions" %>
2
+ <%= javascript_pack_tag "decidim_action_delegator_questions_js" %>
3
3
 
4
4
  <div class="row column">
5
5
  <div class="callout hide" id="vote-result-callout" data-closable data-title-ok="<%= t("question_votes.create.title_success", scope: "decidim.consultations") %>" data-message-ok="<%= t("question_votes.create.success", scope: "decidim.consultations") %>" data-title-ko="<%= t("question_votes.create.title_error", scope: "decidim.consultations") %>" data-message-ko="<%= t("question_votes.create.error", scope: "decidim.consultations") %>">
@@ -103,5 +103,4 @@
103
103
  <%= render partial: "decidim/consultations/questions/vote_modal", locals: { question: question } %>
104
104
  <%= render partial: "decidim/consultations/questions/vote_modal_confirm", locals: { question: question } %>
105
105
  <%= render partial: "decidim/action_delegator/delegations_modal", locals: { question: question } %>
106
- <%= javascript_include_tag "decidim/consultations/utils" %>
107
- <%= javascript_include_tag "decidim/consultations/vote_dialog" %>
106
+ <%= javascript_pack_tag "decidim_consultations" %>
data/config/assets.rb ADDED
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file is located at `config/assets.rb` of your module.
4
+
5
+ # Define the base path of your module. Please note that `Rails.root` may not be
6
+ # used because we are not inside the Rails environment when this file is loaded.
7
+ base_path = File.expand_path("..", __dir__)
8
+
9
+ # Register an additional load path for webpack. All the assets within these
10
+ # directories will be available for inclusion within the Decidim assets. For
11
+ # example, if you have `app/packs/src/decidim/foo.js`, you can include that file
12
+ # in your JavaScript entrypoints (or other JavaScript files within Decidim)
13
+ # using `import "src/decidim/foo"` after you have registered the additional path
14
+ # as follows.
15
+ Decidim::Webpacker.register_path("#{base_path}/app/packs")
16
+
17
+ # Register the entrypoints for your module. These entrypoints can be included
18
+ # within your application using `javascript_pack_tag` and if you include any
19
+ # SCSS files within the entrypoints, they become available for inclusion using
20
+ # `stylesheet_pack_tag`.
21
+ Decidim::Webpacker.register_entrypoints(
22
+ decidim_action_delegator_questions: "#{base_path}/app/packs/entrypoints/decidim_action_delegator_questions.js",
23
+ decidim_action_delegator_questions_js: "#{base_path}/app/packs/entrypoints/decidim_action_delegator_questions_js.js",
24
+ decidim_action_delegator_admin_action_delegator_js: "#{base_path}/app/packs/entrypoints/decidim_action_delegator_admin_action_delegator_js.js"
25
+ )
26
+
27
+ # If you want to import some extra SCSS files in the Decidim main SCSS file
28
+ # without adding any extra stylesheet inclusion tags, you can use the following
29
+ # method to register the stylesheet import for the main application.
30
+ # Decidim::Webpacker.register_stylesheet_import("stylesheets/decidim/foo/app")
31
+
32
+ # If you want to do the same but include the SCSS file for the admin panel's
33
+ # main SCSS file, you can use the following method.
34
+ # Decidim::Webpacker.register_stylesheet_import("stylesheets/decidim/foo/admin", group: :admin)
35
+
36
+ # If you want to override some SCSS variables/settings for Foundation from the
37
+ # module, you can add the following registered import.
38
+ # Decidim::Webpacker.register_stylesheet_import("stylesheets/decidim/foo/settings", type: :settings)
39
+
40
+ # If you want to do the same but override the SCSS variables of the admin
41
+ # panel's styles, you can use the following method.
42
+ # Decidim::Webpacker.register_stylesheet_import("stylesheets/decidim/foo/admin_settings", type: :settings, group: :admin)
@@ -0,0 +1,492 @@
1
+ # frozen_string_literal: true
2
+
3
+ Doorkeeper.configure do
4
+ # Change the ORM that doorkeeper will use (requires ORM extensions installed).
5
+ # Check the list of supported ORMs here: https://github.com/doorkeeper-gem/doorkeeper#orms
6
+ orm :active_record
7
+
8
+ # This block will be called to check whether the resource owner is authenticated or not.
9
+ resource_owner_authenticator do
10
+ raise "Please configure doorkeeper resource_owner_authenticator block located in #{__FILE__}"
11
+ # Put your resource owner authentication logic here.
12
+ # Example implementation:
13
+ # User.find_by(id: session[:user_id]) || redirect_to(new_user_session_url)
14
+ end
15
+
16
+ # If you didn't skip applications controller from Doorkeeper routes in your application routes.rb
17
+ # file then you need to declare this block in order to restrict access to the web interface for
18
+ # adding oauth authorized applications. In other case it will return 403 Forbidden response
19
+ # every time somebody will try to access the admin web interface.
20
+ #
21
+ # admin_authenticator do
22
+ # # Put your admin authentication logic here.
23
+ # # Example implementation:
24
+ #
25
+ # if current_user
26
+ # head :forbidden unless current_user.admin?
27
+ # else
28
+ # redirect_to sign_in_url
29
+ # end
30
+ # end
31
+
32
+ # You can use your own model classes if you need to extend (or even override) default
33
+ # Doorkeeper models such as `Application`, `AccessToken` and `AccessGrant.
34
+ #
35
+ # Be default Doorkeeper ActiveRecord ORM uses it's own classes:
36
+ #
37
+ # access_token_class "Doorkeeper::AccessToken"
38
+ # access_grant_class "Doorkeeper::AccessGrant"
39
+ # application_class "Doorkeeper::Application"
40
+ #
41
+ # Don't forget to include Doorkeeper ORM mixins into your custom models:
42
+ #
43
+ # * ::Doorkeeper::Orm::ActiveRecord::Mixins::AccessToken - for access token
44
+ # * ::Doorkeeper::Orm::ActiveRecord::Mixins::AccessGrant - for access grant
45
+ # * ::Doorkeeper::Orm::ActiveRecord::Mixins::Application - for application (OAuth2 clients)
46
+ #
47
+ # For example:
48
+ #
49
+ # access_token_class "MyAccessToken"
50
+ #
51
+ # class MyAccessToken < ApplicationRecord
52
+ # include ::Doorkeeper::Orm::ActiveRecord::Mixins::AccessToken
53
+ #
54
+ # self.table_name = "hey_i_wanna_my_name"
55
+ #
56
+ # def destroy_me!
57
+ # destroy
58
+ # end
59
+ # end
60
+
61
+ # Enables polymorphic Resource Owner association for Access Tokens and Access Grants.
62
+ # By default this option is disabled.
63
+ #
64
+ # Make sure you properly setup you database and have all the required columns (run
65
+ # `bundle exec rails generate doorkeeper:enable_polymorphic_resource_owner` and execute Rails
66
+ # migrations).
67
+ #
68
+ # If this option enabled, Doorkeeper will store not only Resource Owner primary key
69
+ # value, but also it's type (class name). See "Polymorphic Associations" section of
70
+ # Rails guides: https://guides.rubyonrails.org/association_basics.html#polymorphic-associations
71
+ #
72
+ # [NOTE] If you apply this option on already existing project don't forget to manually
73
+ # update `resource_owner_type` column in the database and fix migration template as it will
74
+ # set NOT NULL constraint for Access Grants table.
75
+ #
76
+ # use_polymorphic_resource_owner
77
+
78
+ # If you are planning to use Doorkeeper in Rails 5 API-only application, then you might
79
+ # want to use API mode that will skip all the views management and change the way how
80
+ # Doorkeeper responds to a requests.
81
+ #
82
+ # api_only
83
+
84
+ # Enforce token request content type to application/x-www-form-urlencoded.
85
+ # It is not enabled by default to not break prior versions of the gem.
86
+ #
87
+ # enforce_content_type
88
+
89
+ # Authorization Code expiration time (default: 10 minutes).
90
+ #
91
+ # authorization_code_expires_in 10.minutes
92
+
93
+ # Access token expiration time (default: 2 hours).
94
+ # If you want to disable expiration, set this to `nil`.
95
+ #
96
+ # access_token_expires_in 2.hours
97
+
98
+ # Assign custom TTL for access tokens. Will be used instead of access_token_expires_in
99
+ # option if defined. In case the block returns `nil` value Doorkeeper fallbacks to
100
+ # +access_token_expires_in+ configuration option value. If you really need to issue a
101
+ # non-expiring access token (which is not recommended) then you need to return
102
+ # Float::INFINITY from this block.
103
+ #
104
+ # `context` has the following properties available:
105
+ #
106
+ # * `client` - the OAuth client application (see Doorkeeper::OAuth::Client)
107
+ # * `grant_type` - the grant type of the request (see Doorkeeper::OAuth)
108
+ # * `scopes` - the requested scopes (see Doorkeeper::OAuth::Scopes)
109
+ # * `resource_owner` - authorized resource owner instance (if present)
110
+ #
111
+ # custom_access_token_expires_in do |context|
112
+ # context.client.additional_settings.implicit_oauth_expiration
113
+ # end
114
+
115
+ # Use a custom class for generating the access token.
116
+ # See https://doorkeeper.gitbook.io/guides/configuration/other-configurations#custom-access-token-generator
117
+ #
118
+ # access_token_generator '::Doorkeeper::JWT'
119
+
120
+ # The controller +Doorkeeper::ApplicationController+ inherits from.
121
+ # Defaults to +ActionController::Base+ unless +api_only+ is set, which changes the default to
122
+ # +ActionController::API+. The return value of this option must be a stringified class name.
123
+ # See https://doorkeeper.gitbook.io/guides/configuration/other-configurations#custom-controllers
124
+ #
125
+ # base_controller 'ApplicationController'
126
+
127
+ # Reuse access token for the same resource owner within an application (disabled by default).
128
+ #
129
+ # This option protects your application from creating new tokens before old **valid** one becomes
130
+ # expired so your database doesn't bloat. Keep in mind that when this option is enabled Doorkeeper
131
+ # doesn't update existing token expiration time, it will create a new token instead if no active matching
132
+ # token found for the application, resources owner and/or set of scopes.
133
+ # Rationale: https://github.com/doorkeeper-gem/doorkeeper/issues/383
134
+ #
135
+ # You can not enable this option together with +hash_token_secrets+.
136
+ #
137
+ # reuse_access_token
138
+
139
+ # In case you enabled `reuse_access_token` option Doorkeeper will try to find matching
140
+ # token using `matching_token_for` Access Token API that searches for valid records
141
+ # in batches in order not to pollute the memory with all the database records. By default
142
+ # Doorkeeper uses batch size of 10 000 records. You can increase or decrease this value
143
+ # depending on your needs and server capabilities.
144
+ #
145
+ # token_lookup_batch_size 10_000
146
+
147
+ # Set a limit for token_reuse if using reuse_access_token option
148
+ #
149
+ # This option limits token_reusability to some extent.
150
+ # If not set then access_token will be reused unless it expires.
151
+ # Rationale: https://github.com/doorkeeper-gem/doorkeeper/issues/1189
152
+ #
153
+ # This option should be a percentage(i.e. (0,100])
154
+ #
155
+ # token_reuse_limit 100
156
+
157
+ # Only allow one valid access token obtained via client credentials
158
+ # per client. If a new access token is obtained before the old one
159
+ # expired, the old one gets revoked (disabled by default)
160
+ #
161
+ # When enabling this option, make sure that you do not expect multiple processes
162
+ # using the same credentials at the same time (e.g. web servers spanning
163
+ # multiple machines and/or processes).
164
+ #
165
+ # revoke_previous_client_credentials_token
166
+
167
+ # Hash access and refresh tokens before persisting them.
168
+ # This will disable the possibility to use +reuse_access_token+
169
+ # since plain values can no longer be retrieved.
170
+ #
171
+ # Note: If you are already a user of doorkeeper and have existing tokens
172
+ # in your installation, they will be invalid without adding 'fallback: :plain'.
173
+ #
174
+ # hash_token_secrets
175
+ # By default, token secrets will be hashed using the
176
+ # +Doorkeeper::Hashing::SHA256+ strategy.
177
+ #
178
+ # If you wish to use another hashing implementation, you can override
179
+ # this strategy as follows:
180
+ #
181
+ # hash_token_secrets using: '::Doorkeeper::Hashing::MyCustomHashImpl'
182
+ #
183
+ # Keep in mind that changing the hashing function will invalidate all existing
184
+ # secrets, if there are any.
185
+
186
+ # Hash application secrets before persisting them.
187
+ #
188
+ # hash_application_secrets
189
+ #
190
+ # By default, applications will be hashed
191
+ # with the +Doorkeeper::SecretStoring::SHA256+ strategy.
192
+ #
193
+ # If you wish to use bcrypt for application secret hashing, uncomment
194
+ # this line instead:
195
+ #
196
+ # hash_application_secrets using: '::Doorkeeper::SecretStoring::BCrypt'
197
+
198
+ # When the above option is enabled, and a hashed token or secret is not found,
199
+ # you can allow to fall back to another strategy. For users upgrading
200
+ # doorkeeper and wishing to enable hashing, you will probably want to enable
201
+ # the fallback to plain tokens.
202
+ #
203
+ # This will ensure that old access tokens and secrets
204
+ # will remain valid even if the hashing above is enabled.
205
+ #
206
+ # This can be done by adding 'fallback: plain', e.g. :
207
+ #
208
+ # hash_application_secrets using: '::Doorkeeper::SecretStoring::BCrypt', fallback: :plain
209
+
210
+ # Issue access tokens with refresh token (disabled by default), you may also
211
+ # pass a block which accepts `context` to customize when to give a refresh
212
+ # token or not. Similar to +custom_access_token_expires_in+, `context` has
213
+ # the following properties:
214
+ #
215
+ # `client` - the OAuth client application (see Doorkeeper::OAuth::Client)
216
+ # `grant_type` - the grant type of the request (see Doorkeeper::OAuth)
217
+ # `scopes` - the requested scopes (see Doorkeeper::OAuth::Scopes)
218
+ #
219
+ # use_refresh_token
220
+
221
+ # Provide support for an owner to be assigned to each registered application (disabled by default)
222
+ # Optional parameter confirmation: true (default: false) if you want to enforce ownership of
223
+ # a registered application
224
+ # NOTE: you must also run the rails g doorkeeper:application_owner generator
225
+ # to provide the necessary support
226
+ #
227
+ # enable_application_owner confirmation: false
228
+
229
+ # Define access token scopes for your provider
230
+ # For more information go to
231
+ # https://doorkeeper.gitbook.io/guides/ruby-on-rails/scopes
232
+ #
233
+ # default_scopes :public
234
+ # optional_scopes :write, :update
235
+
236
+ # Allows to restrict only certain scopes for grant_type.
237
+ # By default, all the scopes will be available for all the grant types.
238
+ #
239
+ # Keys to this hash should be the name of grant_type and
240
+ # values should be the array of scopes for that grant type.
241
+ # Note: scopes should be from configured_scopes (i.e. default or optional)
242
+ #
243
+ # scopes_by_grant_type password: [:write], client_credentials: [:update]
244
+
245
+ # Forbids creating/updating applications with arbitrary scopes that are
246
+ # not in configuration, i.e. +default_scopes+ or +optional_scopes+.
247
+ # (disabled by default)
248
+ #
249
+ # enforce_configured_scopes
250
+
251
+ # Change the way client credentials are retrieved from the request object.
252
+ # By default it retrieves first from the `HTTP_AUTHORIZATION` header, then
253
+ # falls back to the `:client_id` and `:client_secret` params from the `params` object.
254
+ # Check out https://github.com/doorkeeper-gem/doorkeeper/wiki/Changing-how-clients-are-authenticated
255
+ # for more information on customization
256
+ #
257
+ # client_credentials :from_basic, :from_params
258
+
259
+ # Change the way access token is authenticated from the request object.
260
+ # By default it retrieves first from the `HTTP_AUTHORIZATION` header, then
261
+ # falls back to the `:access_token` or `:bearer_token` params from the `params` object.
262
+ # Check out https://github.com/doorkeeper-gem/doorkeeper/wiki/Changing-how-clients-are-authenticated
263
+ # for more information on customization
264
+ #
265
+ # access_token_methods :from_bearer_authorization, :from_access_token_param, :from_bearer_param
266
+
267
+ # Forces the usage of the HTTPS protocol in non-native redirect uris (enabled
268
+ # by default in non-development environments). OAuth2 delegates security in
269
+ # communication to the HTTPS protocol so it is wise to keep this enabled.
270
+ #
271
+ # Callable objects such as proc, lambda, block or any object that responds to
272
+ # #call can be used in order to allow conditional checks (to allow non-SSL
273
+ # redirects to localhost for example).
274
+ #
275
+ # force_ssl_in_redirect_uri !Rails.env.development?
276
+ #
277
+ # force_ssl_in_redirect_uri { |uri| uri.host != 'localhost' }
278
+
279
+ # Specify what redirect URI's you want to block during Application creation.
280
+ # Any redirect URI is allowed by default.
281
+ #
282
+ # You can use this option in order to forbid URI's with 'javascript' scheme
283
+ # for example.
284
+ #
285
+ # forbid_redirect_uri { |uri| uri.scheme.to_s.downcase == 'javascript' }
286
+
287
+ # Allows to set blank redirect URIs for Applications in case Doorkeeper configured
288
+ # to use URI-less OAuth grant flows like Client Credentials or Resource Owner
289
+ # Password Credentials. The option is on by default and checks configured grant
290
+ # types, but you **need** to manually drop `NOT NULL` constraint from `redirect_uri`
291
+ # column for `oauth_applications` database table.
292
+ #
293
+ # You can completely disable this feature with:
294
+ #
295
+ # allow_blank_redirect_uri false
296
+ #
297
+ # Or you can define your custom check:
298
+ #
299
+ # allow_blank_redirect_uri do |grant_flows, client|
300
+ # client.superapp?
301
+ # end
302
+
303
+ # Specify how authorization errors should be handled.
304
+ # By default, doorkeeper renders json errors when access token
305
+ # is invalid, expired, revoked or has invalid scopes.
306
+ #
307
+ # If you want to render error response yourself (i.e. rescue exceptions),
308
+ # set +handle_auth_errors+ to `:raise` and rescue Doorkeeper::Errors::InvalidToken
309
+ # or following specific errors:
310
+ #
311
+ # Doorkeeper::Errors::TokenForbidden, Doorkeeper::Errors::TokenExpired,
312
+ # Doorkeeper::Errors::TokenRevoked, Doorkeeper::Errors::TokenUnknown
313
+ #
314
+ # handle_auth_errors :raise
315
+
316
+ # Customize token introspection response.
317
+ # Allows to add your own fields to default one that are required by the OAuth spec
318
+ # for the introspection response. It could be `sub`, `aud` and so on.
319
+ # This configuration option can be a proc, lambda or any Ruby object responds
320
+ # to `.call` method and result of it's invocation must be a Hash.
321
+ #
322
+ # custom_introspection_response do |token, context|
323
+ # {
324
+ # "sub": "Z5O3upPC88QrAjx00dis",
325
+ # "aud": "https://protected.example.net/resource",
326
+ # "username": User.find(token.resource_owner_id).username
327
+ # }
328
+ # end
329
+ #
330
+ # or
331
+ #
332
+ # custom_introspection_response CustomIntrospectionResponder
333
+
334
+ # Specify what grant flows are enabled in array of Strings. The valid
335
+ # strings and the flows they enable are:
336
+ #
337
+ # "authorization_code" => Authorization Code Grant Flow
338
+ # "implicit" => Implicit Grant Flow
339
+ # "password" => Resource Owner Password Credentials Grant Flow
340
+ # "client_credentials" => Client Credentials Grant Flow
341
+ #
342
+ # If not specified, Doorkeeper enables authorization_code and
343
+ # client_credentials.
344
+ #
345
+ # implicit and password grant flows have risks that you should understand
346
+ # before enabling:
347
+ # https://datatracker.ietf.org/doc/html/rfc6819#section-4.4.2
348
+ # https://datatracker.ietf.org/doc/html/rfc6819#section-4.4.3
349
+ #
350
+ # grant_flows %w[authorization_code client_credentials]
351
+
352
+ # Allows to customize OAuth grant flows that +each+ application support.
353
+ # You can configure a custom block (or use a class respond to `#call`) that must
354
+ # return `true` in case Application instance supports requested OAuth grant flow
355
+ # during the authorization request to the server. This configuration +doesn't+
356
+ # set flows per application, it only allows to check if application supports
357
+ # specific grant flow.
358
+ #
359
+ # For example you can add an additional database column to `oauth_applications` table,
360
+ # say `t.array :grant_flows, default: []`, and store allowed grant flows that can
361
+ # be used with this application there. Then when authorization requested Doorkeeper
362
+ # will call this block to check if specific Application (passed with client_id and/or
363
+ # client_secret) is allowed to perform the request for the specific grant type
364
+ # (authorization, password, client_credentials, etc).
365
+ #
366
+ # Example of the block:
367
+ #
368
+ # ->(flow, client) { client.grant_flows.include?(flow) }
369
+ #
370
+ # In case this option invocation result is `false`, Doorkeeper server returns
371
+ # :unauthorized_client error and stops the request.
372
+ #
373
+ # @param allow_grant_flow_for_client [Proc] Block or any object respond to #call
374
+ # @return [Boolean] `true` if allow or `false` if forbid the request
375
+ #
376
+ # allow_grant_flow_for_client do |grant_flow, client|
377
+ # # `grant_flows` is an Array column with grant
378
+ # # flows that application supports
379
+ #
380
+ # client.grant_flows.include?(grant_flow)
381
+ # end
382
+
383
+ # If you need arbitrary Resource Owner-Client authorization you can enable this option
384
+ # and implement the check your need. Config option must respond to #call and return
385
+ # true in case resource owner authorized for the specific application or false in other
386
+ # cases.
387
+ #
388
+ # Be default all Resource Owners are authorized to any Client (application).
389
+ #
390
+ # authorize_resource_owner_for_client do |client, resource_owner|
391
+ # resource_owner.admin? || client.owners_allowlist.include?(resource_owner)
392
+ # end
393
+
394
+ # Hook into the strategies' request & response life-cycle in case your
395
+ # application needs advanced customization or logging:
396
+ #
397
+ # before_successful_strategy_response do |request|
398
+ # puts "BEFORE HOOK FIRED! #{request}"
399
+ # end
400
+ #
401
+ # after_successful_strategy_response do |request, response|
402
+ # puts "AFTER HOOK FIRED! #{request}, #{response}"
403
+ # end
404
+
405
+ # Hook into Authorization flow in order to implement Single Sign Out
406
+ # or add any other functionality. Inside the block you have an access
407
+ # to `controller` (authorizations controller instance) and `context`
408
+ # (Doorkeeper::OAuth::Hooks::Context instance) which provides pre auth
409
+ # or auth objects with issued token based on hook type (before or after).
410
+ #
411
+ # before_successful_authorization do |controller, context|
412
+ # Rails.logger.info(controller.request.params.inspect)
413
+ #
414
+ # Rails.logger.info(context.pre_auth.inspect)
415
+ # end
416
+ #
417
+ # after_successful_authorization do |controller, context|
418
+ # controller.session[:logout_urls] <<
419
+ # Doorkeeper::Application
420
+ # .find_by(controller.request.params.slice(:redirect_uri))
421
+ # .logout_uri
422
+ #
423
+ # Rails.logger.info(context.auth.inspect)
424
+ # Rails.logger.info(context.issued_token)
425
+ # end
426
+
427
+ # Under some circumstances you might want to have applications auto-approved,
428
+ # so that the user skips the authorization step.
429
+ # For example if dealing with a trusted application.
430
+ #
431
+ # skip_authorization do |resource_owner, client|
432
+ # client.superapp? or resource_owner.admin?
433
+ # end
434
+
435
+ # Configure custom constraints for the Token Introspection request.
436
+ # By default this configuration option allows to introspect a token by another
437
+ # token of the same application, OR to introspect the token that belongs to
438
+ # authorized client (from authenticated client) OR when token doesn't
439
+ # belong to any client (public token). Otherwise requester has no access to the
440
+ # introspection and it will return response as stated in the RFC.
441
+ #
442
+ # Block arguments:
443
+ #
444
+ # @param token [Doorkeeper::AccessToken]
445
+ # token to be introspected
446
+ #
447
+ # @param authorized_client [Doorkeeper::Application]
448
+ # authorized client (if request is authorized using Basic auth with
449
+ # Client Credentials for example)
450
+ #
451
+ # @param authorized_token [Doorkeeper::AccessToken]
452
+ # Bearer token used to authorize the request
453
+ #
454
+ # In case the block returns `nil` or `false` introspection responses with 401 status code
455
+ # when using authorized token to introspect, or you'll get 200 with { "active": false } body
456
+ # when using authorized client to introspect as stated in the
457
+ # RFC 7662 section 2.2. Introspection Response.
458
+ #
459
+ # Using with caution:
460
+ # Keep in mind that these three parameters pass to block can be nil as following case:
461
+ # `authorized_client` is nil if and only if `authorized_token` is present, and vice versa.
462
+ # `token` will be nil if and only if `authorized_token` is present.
463
+ # So remember to use `&` or check if it is present before calling method on
464
+ # them to make sure you doesn't get NoMethodError exception.
465
+ #
466
+ # You can define your custom check:
467
+ #
468
+ # allow_token_introspection do |token, authorized_client, authorized_token|
469
+ # if authorized_token
470
+ # # customize: require `introspection` scope
471
+ # authorized_token.application == token&.application ||
472
+ # authorized_token.scopes.include?("introspection")
473
+ # elsif token.application
474
+ # # `protected_resource` is a new database boolean column, for example
475
+ # authorized_client == token.application || authorized_client.protected_resource?
476
+ # else
477
+ # # public token (when token.application is nil, token doesn't belong to any application)
478
+ # true
479
+ # end
480
+ # end
481
+ #
482
+ # Or you can completely disable any token introspection:
483
+ #
484
+ # allow_token_introspection false
485
+ #
486
+ # If you need to block the request at all, then configure your routes.rb or web-server
487
+ # like nginx to forbid the request.
488
+
489
+ # WWW-Authenticate Realm (default: "Doorkeeper").
490
+ #
491
+ # realm "Doorkeeper"
492
+ end
@@ -104,3 +104,7 @@ ca:
104
104
  decidim:
105
105
  user_profile:
106
106
  vote_delegations: Delegacions de vot
107
+ admin:
108
+ question:
109
+ attachments: Adjunts
110
+ categories: Categories
@@ -105,5 +105,9 @@ en:
105
105
  name: Delegations Verifier
106
106
  layouts:
107
107
  decidim:
108
+ admin:
109
+ question:
110
+ attachments: Attachments
111
+ categories: Categories
108
112
  user_profile:
109
113
  vote_delegations: Vote delegations
@@ -104,3 +104,7 @@ es:
104
104
  decidim:
105
105
  user_profile:
106
106
  vote_delegations: Vote delegations
107
+ admin:
108
+ question:
109
+ attachments: Adjuntos
110
+ categories: Categorías
@@ -30,10 +30,6 @@ module Decidim
30
30
  root to: "delegations#index"
31
31
  end
32
32
 
33
- initializer "decidim_action_delegator.admin_assets" do |app|
34
- app.config.assets.precompile += %w(admin/decidim_action_delegator_manifest.js admin/decidim_action_delegator_manifest.css)
35
- end
36
-
37
33
  def load_seed
38
34
  nil
39
35
  end
@@ -32,8 +32,14 @@ module Decidim
32
32
  Decidim::Verifications::Sms::AuthorizationsController.include(Decidim::ActionDelegator::Verifications::Sms::AuthorizationsControllerOverride)
33
33
  end
34
34
 
35
- initializer "decidim_action_delegator.assets" do |app|
36
- app.config.assets.precompile += %w(decidim_action_delegator_manifest.js decidim_action_delegator_manifest.css)
35
+ initializer "decidim_action_delegator.layout_helper" do |_app|
36
+ # activate Decidim LayoutHelper for the overriden views
37
+ ::Decidim::Admin::ApplicationController.helper ::Decidim::LayoutHelper
38
+ ::Decidim::ApplicationController.helper ::Decidim::LayoutHelper
39
+ end
40
+
41
+ initializer "decidim_action_delegator.webpacker.assets_path" do |_app|
42
+ Decidim.register_assets_path File.expand_path("app/packs", root)
37
43
  end
38
44
 
39
45
  initializer "decidim.user_menu" do
@@ -3,8 +3,8 @@
3
3
  module Decidim
4
4
  # This holds the decidim-action_delegator version.
5
5
  module ActionDelegator
6
- MIN_DECIDIM_VERSION = ">= 0.24.0"
7
- MAX_DECIDIM_VERSION = "<= 0.24.3"
8
- VERSION = "0.4.1"
6
+ MIN_DECIDIM_VERSION = ">= 0.26.0"
7
+ MAX_DECIDIM_VERSION = "< 0.27.0"
8
+ VERSION = "0.6.0"
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim-action_delegator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pau Pérez Fabregat
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-04-01 00:00:00.000000000 Z
12
+ date: 2022-11-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: decidim-admin
@@ -17,60 +17,60 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 0.24.0
21
- - - "<="
20
+ version: 0.26.0
21
+ - - "<"
22
22
  - !ruby/object:Gem::Version
23
- version: 0.24.3
23
+ version: 0.27.0
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
28
  - - ">="
29
29
  - !ruby/object:Gem::Version
30
- version: 0.24.0
31
- - - "<="
30
+ version: 0.26.0
31
+ - - "<"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.24.3
33
+ version: 0.27.0
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: decidim-consultations
36
36
  requirement: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 0.24.0
41
- - - "<="
40
+ version: 0.26.0
41
+ - - "<"
42
42
  - !ruby/object:Gem::Version
43
- version: 0.24.3
43
+ version: 0.27.0
44
44
  type: :runtime
45
45
  prerelease: false
46
46
  version_requirements: !ruby/object:Gem::Requirement
47
47
  requirements:
48
48
  - - ">="
49
49
  - !ruby/object:Gem::Version
50
- version: 0.24.0
51
- - - "<="
50
+ version: 0.26.0
51
+ - - "<"
52
52
  - !ruby/object:Gem::Version
53
- version: 0.24.3
53
+ version: 0.27.0
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: decidim-core
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: 0.24.0
61
- - - "<="
60
+ version: 0.26.0
61
+ - - "<"
62
62
  - !ruby/object:Gem::Version
63
- version: 0.24.3
63
+ version: 0.27.0
64
64
  type: :runtime
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - ">="
69
69
  - !ruby/object:Gem::Version
70
- version: 0.24.0
71
- - - "<="
70
+ version: 0.26.0
71
+ - - "<"
72
72
  - !ruby/object:Gem::Version
73
- version: 0.24.3
73
+ version: 0.27.0
74
74
  - !ruby/object:Gem::Dependency
75
75
  name: savon
76
76
  requirement: !ruby/object:Gem::Requirement
@@ -105,20 +105,20 @@ dependencies:
105
105
  requirements:
106
106
  - - ">="
107
107
  - !ruby/object:Gem::Version
108
- version: 0.24.0
109
- - - "<="
108
+ version: 0.26.0
109
+ - - "<"
110
110
  - !ruby/object:Gem::Version
111
- version: 0.24.3
111
+ version: 0.27.0
112
112
  type: :development
113
113
  prerelease: false
114
114
  version_requirements: !ruby/object:Gem::Requirement
115
115
  requirements:
116
116
  - - ">="
117
117
  - !ruby/object:Gem::Version
118
- version: 0.24.0
119
- - - "<="
118
+ version: 0.26.0
119
+ - - "<"
120
120
  - !ruby/object:Gem::Version
121
- version: 0.24.3
121
+ version: 0.27.0
122
122
  description: A tool for Decidim that provides extended functionalities for cooperatives
123
123
  and allows delegated voting.
124
124
  email:
@@ -131,14 +131,6 @@ files:
131
131
  - LICENSE-AGPLv3.txt
132
132
  - README.md
133
133
  - Rakefile
134
- - app/assets/config/admin/decidim_action_delegator_manifest.css
135
- - app/assets/config/admin/decidim_action_delegator_manifest.js
136
- - app/assets/config/decidim_action_delegator_manifest.css
137
- - app/assets/config/decidim_action_delegator_manifest.js
138
- - app/assets/images/decidim/action_delegator/icon.svg
139
- - app/assets/javascripts/decidim/action_delegator/admin/action_delegator.js.es6
140
- - app/assets/javascripts/decidim/action_delegator/questions.js.es6
141
- - app/assets/stylesheets/decidim/action_delegator/questions.scss
142
134
  - app/commands/decidim/action_delegator/admin/create_delegation.rb
143
135
  - app/commands/decidim/action_delegator/consultations/multiple_vote_question_override.rb
144
136
  - app/commands/decidim/action_delegator/consultations/vote_question_override.rb
@@ -169,6 +161,13 @@ files:
169
161
  - app/models/decidim/action_delegator/setting.rb
170
162
  - app/models/decidim/action_delegator/unversioned_vote.rb
171
163
  - app/models/decidim/action_delegator/whodunnit_vote.rb
164
+ - app/packs/entrypoints/decidim_action_delegator.scss
165
+ - app/packs/entrypoints/decidim_action_delegator_admin_action_delegator_js.js
166
+ - app/packs/entrypoints/decidim_action_delegator_questions.js
167
+ - app/packs/entrypoints/decidim_action_delegator_questions_js.js
168
+ - app/packs/src/decidim/action_delegator/admin/action_delegator.js.es6
169
+ - app/packs/src/decidim/action_delegator/questions.js.es6
170
+ - app/packs/stylesheets/decidim/action_delegator/questions.scss
172
171
  - app/permissions/decidim/action_delegator/consultations_permissions_extension.rb
173
172
  - app/permissions/decidim/action_delegator/permissions.rb
174
173
  - app/presenters/decidim/action_delegator/admin/consultation_presenter.rb
@@ -220,7 +219,9 @@ files:
220
219
  - app/views/layouts/decidim/admin/consultation.html.erb
221
220
  - app/views/layouts/decidim/admin/question.html.erb
222
221
  - app/views/layouts/decidim/admin/users.html.erb
222
+ - config/assets.rb
223
223
  - config/i18n-tasks.yml
224
+ - config/initializers/doorkeeper.rb
224
225
  - config/locales/ca.yml
225
226
  - config/locales/cs.yml
226
227
  - config/locales/en.yml
@@ -260,7 +261,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
260
261
  - !ruby/object:Gem::Version
261
262
  version: '0'
262
263
  requirements: []
263
- rubygems_version: 3.1.2
264
+ rubygems_version: 3.1.6
264
265
  signing_key:
265
266
  specification_version: 4
266
267
  summary: A Decidim ActionDelegator module
@@ -1 +0,0 @@
1
- //= link decidim/action_delegator/admin/action_delegator.js
@@ -1,3 +0,0 @@
1
- /*
2
- *= link decidim/action_delegator/questions.css
3
- */
@@ -1,2 +0,0 @@
1
- //= link decidim/action_delegator/admin/action_delegator.js
2
- //= link decidim/action_delegator/questions.js
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 35 35"><path d="M17.5 35A17.5 17.5 0 1 1 35 17.5 17.52 17.52 0 0 1 17.5 35zm0-33.06A15.56 15.56 0 1 0 33.06 17.5 15.57 15.57 0 0 0 17.5 1.94zm9.5 13.7H8a1 1 0 0 1 0-1.94h19a1 1 0 0 1 0 1.94zm0 3.68H8a1 1 0 0 1 0-1.94h19a1 1 0 0 1 0 1.94zM22.26 23H8a1 1 0 0 1 0-1.94h14.26a1 1 0 0 1 0 1.94z"/></svg>