model_driven_api 2.3.3 → 2.3.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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/app/controllers/api/v2/application_controller.rb +4 -3
- data/app/controllers/api/v2/info_controller.rb +1 -1
- data/config/initializers/time_with_zone.rb +8 -0
- data/lib/concerns/api_exception_management.rb +10 -8
- data/lib/model_driven_api/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b8eeb8407dddfe99afa98093d2c16b193572843694616f7b27249c3661390b16
|
4
|
+
data.tar.gz: 31287c2fb6cb36353e76652e470e6d3c58ad4d4140c08a90e3b633ab98324a91
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 519231f4c1073ffe54c3800ade34ee21cbcee27bfa8e568b66521808458a9def469679a01ca82222056ea69cbd314eb5a8a5bac979ba8801ea7ee7b926e2835c
|
7
|
+
data.tar.gz: 4ed7f93269ce8bf37104a36cb3b71c5de52f45d7ce6623eee6ffdcb2b95fd86c53b043ff5bf2e2692a784a9d079dfe0b787e9bb228486a4d4854faf4c7a03529
|
data/README.md
CHANGED
@@ -422,7 +422,7 @@ Once loaded the tests inside the insomnia application, please right click on the
|
|
422
422
|
|
423
423
|
## TODO
|
424
424
|
|
425
|
-
*
|
425
|
+
* Document the new feature (from version 2.3.3) to add Authentication methods which override the JWT described above. Useful for Webhooks and machine2machine trusted dialogues.
|
426
426
|
|
427
427
|
## References
|
428
428
|
Thanks to all these people for ideas:
|
@@ -107,7 +107,8 @@ class Api::V2::ApplicationController < ActionController::API
|
|
107
107
|
# call an unwanted method in the AR Model.
|
108
108
|
resource = "custom_action_#{params[:do]}"
|
109
109
|
raise NoMethodError unless @model.respond_to?(resource)
|
110
|
-
return true, MultiJson.dump(params[:id].blank? ? @model.send(resource, params) : @model.send(resource, params[:id].to_i, params))
|
110
|
+
# return true, MultiJson.dump(params[:id].blank? ? @model.send(resource, params) : @model.send(resource, params[:id].to_i, params))
|
111
|
+
return true, MultiJson.dump(@model.send(resource, params))
|
111
112
|
end
|
112
113
|
# if it's here there is no custom action in the request querystring
|
113
114
|
return false
|
@@ -123,11 +124,11 @@ class Api::V2::ApplicationController < ActionController::API
|
|
123
124
|
def authenticate_request
|
124
125
|
# puts request.headers.inspect
|
125
126
|
@current_user = nil
|
127
|
+
# puts "Are there wbehooks headers to check for? #{Settings.ns(:security).allowed_authorization_headers}"
|
126
128
|
Settings.ns(:security).allowed_authorization_headers.split(",").each do |header|
|
127
|
-
# puts request.headers[header.underscore.dasherize]
|
129
|
+
# puts "Found header #{header}: #{request.headers[header.underscore.dasherize]}"
|
128
130
|
check_authorization("Authorize#{header}".constantize.call(request.headers, request.raw_post)) if request.headers[header.underscore.dasherize]
|
129
131
|
end
|
130
|
-
return unauthenticated!(OpenStruct.new({message: @auth_errors})) unless @current_user
|
131
132
|
|
132
133
|
# This is the default one, if the header doesn't have a valid form for one of the other Auth methods, then use this Auth Class
|
133
134
|
check_authorization AuthorizeApiRequest.call(request.headers) unless @current_user
|
@@ -6,7 +6,7 @@ class Api::V2::InfoController < Api::V2::ApplicationController
|
|
6
6
|
|
7
7
|
# api :GET, '/api/v2/info/version', "Just prints the APPVERSION."
|
8
8
|
def version
|
9
|
-
render json: { version:
|
9
|
+
render json: { version: "TODO: Find a Way to Dynamically Obtain It" }.to_json, status: 200
|
10
10
|
end
|
11
11
|
|
12
12
|
# api :GET, '/api/v2/info/roles'
|
@@ -2,13 +2,15 @@ module ApiExceptionManagement
|
|
2
2
|
extend ActiveSupport::Concern
|
3
3
|
|
4
4
|
included do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
5
|
+
if Rails.env.production?
|
6
|
+
rescue_from NoMethodError, with: :not_found!
|
7
|
+
rescue_from CanCan::AccessDenied, with: :unauthorized!
|
8
|
+
rescue_from AuthenticateUser::AccessDenied, with: :unauthenticated!
|
9
|
+
rescue_from ActionController::RoutingError, with: :not_found!
|
10
|
+
rescue_from ActiveModel::ForbiddenAttributesError, with: :fivehundred!
|
11
|
+
rescue_from ActiveRecord::RecordInvalid, with: :invalid!
|
12
|
+
rescue_from ActiveRecord::RecordNotFound, with: :not_found!
|
13
|
+
end
|
12
14
|
|
13
15
|
def unauthenticated! exception = AuthenticateUser::AccessDenied.new
|
14
16
|
response.headers['WWW-Authenticate'] = "Token realm=Application"
|
@@ -33,7 +35,7 @@ module ApiExceptionManagement
|
|
33
35
|
|
34
36
|
def api_error(status: 500, errors: [])
|
35
37
|
# puts errors.full_messages if !Rails.env.production? && errors.respond_to?(:full_messages)
|
36
|
-
head status && return if errors.
|
38
|
+
head status && return if errors.blank?
|
37
39
|
|
38
40
|
# For retrocompatibility, I try to send back only strings, as errors
|
39
41
|
errors_response = if errors.respond_to?(:full_messages)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: model_driven_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.
|
4
|
+
version: 2.3.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gabriele Tassoni
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-03-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thecore_backend_commons
|
@@ -142,6 +142,7 @@ files:
|
|
142
142
|
- config/initializers/after_initialize_for_model_driven_api.rb
|
143
143
|
- config/initializers/cors_api_thecore.rb
|
144
144
|
- config/initializers/knock.rb
|
145
|
+
- config/initializers/time_with_zone.rb
|
145
146
|
- config/initializers/wrap_parameters.rb
|
146
147
|
- config/routes.rb
|
147
148
|
- lib/concerns/api_exception_management.rb
|