devise-api 0.1.3 → 0.2.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: 7d47e2be72c7d15e0c0de4535943a208d8d37e7d2b801de167ccf5f5c8e3d08e
4
- data.tar.gz: 87d42ee2c7784370789032608d0caa634f5a703c7c4cbb15139c82d34ca26664
3
+ metadata.gz: 2d86e2276841e4ca3ae7497278542d686da38368f5f5cdf76629abd463c7976f
4
+ data.tar.gz: 3f33438f2a503b0f1bd510e6020c0d88f61a82715aff8b701a1872a4901ffb75
5
5
  SHA512:
6
- metadata.gz: 6b6045dbf6c5906a5ef70de320d39df12f79b1c7599ce91851c98e61be2449959b0f7e263ad3a795d21070d56b9a84944d4799e1a5156fee8ae90039f8c9642e
7
- data.tar.gz: b92e03c4fdb2d18eb3d3cf1ca690782e9f9149362b27b4535ccae3c739dbae3e14550b9e5d4535da6a3aa7658ee25936b59e49c937a3093b90b88d9477ca0f13
6
+ metadata.gz: acea2091463ddb32d14df2c6b6aaf88e55549796b79ba35855ffdd08f3f78e8a5e5d9f305f48a855a2f3d17aa2cee2c8e7fce7ce07efda222af9de785a9f57cf
7
+ data.tar.gz: 8cecc648a297705d7d7f82420aa48fd6f4ed7d8899ba721cf0002cbae34f9f1e3fae5032877a4efa826f609c50592f894f9407adeeed6a12c7ca856b2dd9c5d2
data/Gemfile.lock CHANGED
@@ -259,6 +259,7 @@ GEM
259
259
  PLATFORMS
260
260
  arm64-darwin-21
261
261
  arm64-darwin-22
262
+ arm64-darwin-23
262
263
 
263
264
  DEPENDENCIES
264
265
  awesome_print
data/README.md CHANGED
@@ -93,6 +93,7 @@ Devise.setup do |config|
93
93
 
94
94
  # Sign up
95
95
  api.sign_up.enabled = true
96
+ api.sign_up.extra_fields = []
96
97
 
97
98
  # Authorization
98
99
  api.authorization.key = 'Authorization'
@@ -116,8 +117,8 @@ Devise.setup do |config|
116
117
  # Before callbacks
117
118
  api.before_sign_in = ->(_params, _request, _resource_class) { }
118
119
  api.before_sign_up = ->(_params, _request, _resource_class) { }
119
- api.before_refresh = ->(_params, _request, _resource_class) { }
120
- api.before_revoke = ->(_params, _request, _resource_class) { }
120
+ api.before_refresh = ->(_token_model, _request) { }
121
+ api.before_revoke = ->(_token_model, _request) { }
121
122
  end
122
123
  end
123
124
  ```
@@ -157,10 +158,12 @@ module Devise::Api::Responses::TokenResponseDecorator
157
158
  end
158
159
  ```
159
160
 
160
- Then you need to prepend your decorator to the response class. For example:
161
+ Then you need to load and prepend your decorator to the response class. For example:
161
162
 
162
163
  ```ruby
163
164
  # config/initializers/devise.rb
165
+ require 'devise/api/responses/token_response_decorator' # Either do this or autoload the lib directory
166
+
164
167
  Devise.setup do |config|
165
168
  end
166
169
 
@@ -4,6 +4,7 @@
4
4
  module Devise
5
5
  module Api
6
6
  class TokensController < Devise.api.config.base_controller.constantize
7
+ wrap_parameters false
7
8
  skip_before_action :verify_authenticity_token, raise: false
8
9
  before_action :authenticate_devise_api_token!, only: %i[info]
9
10
 
@@ -122,7 +123,7 @@ module Devise
122
123
  error_response = Devise::Api::Responses::ErrorResponse.new(request, error: :revoked_token,
123
124
  resource_class: resource_class)
124
125
 
125
- render json: error_response.body, status: error_response.status
126
+ return render json: error_response.body, status: error_response.status
126
127
  end
127
128
 
128
129
  Devise.api.config.before_refresh.call(current_devise_api_refresh_token, request)
@@ -149,7 +150,7 @@ module Devise
149
150
  private
150
151
 
151
152
  def sign_up_params
152
- params.permit(*resource_class.authentication_keys,
153
+ params.permit(*Devise.api.config.sign_up.extra_fields, *resource_class.authentication_keys,
153
154
  *::Devise::ParameterSanitizer::DEFAULT_PERMITTED_ATTRIBUTES[:sign_up]).to_h
154
155
  end
155
156
 
@@ -22,6 +22,7 @@ module Devise
22
22
 
23
23
  setting :sign_up, reader: true do
24
24
  setting :enabled, default: true, reader: true
25
+ setting :extra_fields, default: [], reader: true
25
26
  end
26
27
 
27
28
  setting :authorization, reader: true do
@@ -41,15 +41,19 @@ module Devise
41
41
  refresh_token: Devise.api.config.refresh_token.enabled ? token.refresh_token : nil,
42
42
  expires_in: token.expires_in,
43
43
  token_type: ::Devise.api.config.authorization.scheme,
44
- resource_owner: {
45
- id: resource_owner.id,
46
- email: resource_owner.email,
47
- created_at: resource_owner.created_at,
48
- updated_at: resource_owner.updated_at
49
- }
44
+ resource_owner: default_resource_owner
50
45
  }.compact
51
46
  end
52
47
 
48
+ def default_resource_owner
49
+ keys_to_extract = %i[id email created_at updated_at]
50
+ if Devise.api.config.sign_up.extra_fields.present?
51
+ keys_to_extract |= Devise.api.config.sign_up.extra_fields.map(&:to_sym)
52
+ end
53
+
54
+ resource_owner.slice(*keys_to_extract)
55
+ end
56
+
53
57
  def status
54
58
  return :created if sign_up_action?
55
59
  return :no_content if revoke_action?
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Devise
4
4
  module Api
5
- VERSION = '0.1.3'
5
+ VERSION = '0.2.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - nejdetkadir
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-08-08 00:00:00.000000000 Z
11
+ date: 2024-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: devise
@@ -166,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
166
166
  - !ruby/object:Gem::Version
167
167
  version: '0'
168
168
  requirements: []
169
- rubygems_version: 3.4.12
169
+ rubygems_version: 3.5.18
170
170
  signing_key:
171
171
  specification_version: 4
172
172
  summary: The devise-api gem is a convenient way to add authentication to your Ruby