rails_jwt_auth 1.4.1 → 1.7.1

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: 6dea41e10dc4a6cbed20dda27ee1c6e0f68a947c08fa83e0c617e7f2407156b8
4
- data.tar.gz: b1331f29423b908ba9712c1a5ebf303dc21a13577507c27ff47ce08f6c585902
3
+ metadata.gz: b624ce7e99bced2abcbe29c05955af2fa4ccf7b6d9badc74e5effdd2b98ac4e9
4
+ data.tar.gz: 427995dd79006f041e27de387ce9affa2294d2eedcefcf02eaf502c3f9d60630
5
5
  SHA512:
6
- metadata.gz: 68dda6972d70400b76987eec57c1e3323eb3f7eac49c3f4eb3102a8ca0fe9d2b8e621743aa50147545ce3d4ddb17cc15d20942872fe94f077aa6094238e1afed
7
- data.tar.gz: 573960c4cad77a2cce9de2e33008c2beae5210fce9f1d3b9c1fc3747a5ca18bab3a133f3055d24a85e83bd22713606564d100a134735e09d7ebade47e6b7ffea
6
+ metadata.gz: ffda5aa2b329f926133837ba6fa254643c0637eaef292b3f63ec4305dedd34f3e1d238fa52033bfbbe4e9407d916af6ff4fefcee2f58923d08a1e906b7991be9
7
+ data.tar.gz: d0a639b9e6345feaaa3d28095cbed507e549fa8a1d61c4f125cb79a7ee895ba937c1bdd13324d4742e5f6b7594bd6d4dee146b314301bc4b026b721b0bd6ad07
data/README.md CHANGED
@@ -59,7 +59,7 @@ rails g rails_jwt_auth:migrate
59
59
 
60
60
  ## Configuration
61
61
 
62
- You can edit configuration options into `config/initializers/auth_token_auth.rb` file created by generator.
62
+ You can edit configuration options into `config/initializers/rails_jwt_auth.rb` file created by generator.
63
63
 
64
64
  | Option | Default value | Description |
65
65
  | ------------------------------- | ----------------- | ---------------------------------------------------------------------- |
@@ -187,12 +187,31 @@ end
187
187
 
188
188
  Return current signed-in user.
189
189
 
190
+ - **jwt_payload**
191
+
192
+ Return current jwt payload.
193
+
190
194
  - **signed_in?**
191
195
 
192
196
  Verify if a user is signed in.
193
197
 
194
198
  ## Default Controllers API
195
199
 
200
+ | Prefix | Verb | URI Pattern | Controller#Action |
201
+ | ------------ | ------ | ---------------------------- | ----------------------------------- |
202
+ | session | DELETE | /session(.:format) | rails_jwt_auth/sessions#destroy |
203
+ | | POST | /session(.:format) | rails_jwt_auth/sessions#create |
204
+ | registration | POST | /registration(.:format) | rails_jwt_auth/registrations#create |
205
+ |confirmations | POST | /confirmations(.:format) | rails_jwt_auth/confirmations#create |
206
+ | confirmation | PATCH | /confirmations/:id(.:format) | rails_jwt_auth/confirmations#update |
207
+ | | PUT | /confirmations/:id(.:format) | rails_jwt_auth/confirmations#update |
208
+ | passwords | POST | /passwords(.:format) | rails_jwt_auth/passwords#create |
209
+ | password | PATCH | /passwords/:id(.:format) | rails_jwt_auth/passwords#update |
210
+ | | PUT | /passwords/:id(.:format) | rails_jwt_auth/passwords#update |
211
+ | invitations | POST | /invitations(.:format) | rails_jwt_auth/invitations#create |
212
+ | invitation | PATCH | /invitations/:id(.:format) | rails_jwt_auth/invitations#update |
213
+ | | PUT | /invitations/:id(.:format) | rails_jwt_auth/invitations#update |
214
+
196
215
  ### Session
197
216
 
198
217
  Session api is defined by `RailsJwtAuth::SessionsController`.
@@ -205,8 +224,8 @@ Session api is defined by `RailsJwtAuth::SessionsController`.
205
224
  method: POST,
206
225
  data: {
207
226
  session: {
208
- email: "user@email.com",
209
- password: "12345678"
227
+ email: 'user@email.com',
228
+ password: '12345678'
210
229
  }
211
230
  }
212
231
  }
@@ -234,8 +253,8 @@ Registration api is defined by `RailsJwtAuth::RegistrationsController`.
234
253
  method: POST,
235
254
  data: {
236
255
  user: {
237
- email: "user@email.com",
238
- password: "12345678"
256
+ email: 'user@email.com',
257
+ password: '12345678'
239
258
  }
240
259
  }
241
260
  }
@@ -245,15 +264,15 @@ Registration api is defined by `RailsJwtAuth::RegistrationsController`.
245
264
 
246
265
  Confirmation api is defined by `RailsJwtAuth::ConfirmationsController`.
247
266
 
267
+ It is necessary to set a value for `confirmations_url` option into `config/initializers/rails_jwt_auth.rb`.
268
+
248
269
  1. Confirm user:
249
270
 
250
271
  ```js
251
272
  {
252
- url: host/confirmation,
273
+ url: host/confirmations/:token,
253
274
  method: PUT
254
- data: {
255
- confirmation_token: "token"
256
- }
275
+ data: {}
257
276
  }
258
277
  ```
259
278
 
@@ -261,11 +280,11 @@ Confirmation api is defined by `RailsJwtAuth::ConfirmationsController`.
261
280
 
262
281
  ```js
263
282
  {
264
- url: host/confirmation,
283
+ url: host/confirmations,
265
284
  method: POST,
266
285
  data: {
267
286
  confirmation: {
268
- email: "user@example.com"
287
+ email: 'user@example.com'
269
288
  }
270
289
  }
271
290
  }
@@ -279,11 +298,11 @@ Password api is defined by `RailsJwtAuth::PasswordsController`.
279
298
 
280
299
  ```js
281
300
  {
282
- url: host/password,
301
+ url: host/passwords,
283
302
  method: POST,
284
303
  data: {
285
304
  password: {
286
- email: "user@example.com"
305
+ email: 'user@example.com'
287
306
  }
288
307
  }
289
308
  }
@@ -293,10 +312,9 @@ Password api is defined by `RailsJwtAuth::PasswordsController`.
293
312
 
294
313
  ```js
295
314
  {
296
- url: host/password,
315
+ url: host/passwords/:token,
297
316
  method: PUT,
298
317
  data: {
299
- reset_password_token: "token",
300
318
  password: {
301
319
  password: '1234',
302
320
  password_confirmation: '1234'
@@ -317,7 +335,7 @@ Invitations api is provided by `RailsJwtAuth::InvitationsController`.
317
335
  method: POST,
318
336
  data: {
319
337
  invitation: {
320
- email: "user@example.com",
338
+ email: 'user@example.com',
321
339
  // More fields of your user
322
340
  }
323
341
  }
@@ -350,7 +368,8 @@ Unlock api is provided by `RailsJwtAuth::UnlocksController`.
350
368
  ```js
351
369
  {
352
370
  url: host/unlocks/:unlock_token,
353
- method: PUT
371
+ method: PUT,
372
+ data: {}
354
373
  }
355
374
  ```
356
375
 
@@ -426,7 +445,10 @@ class CurrentUserController < ApplicationController
426
445
 
427
446
  def update
428
447
  if update_params[:password]
429
- current_user.update_with_password(update_params)
448
+ # update password and remove other sessions tokens
449
+ current_user.update_with_password(
450
+ update_params.merge(auth_tokens: [jwt_payload['auth_token']])
451
+ )
430
452
  else
431
453
  current_user.update_attributes(update_params)
432
454
  end
@@ -471,7 +493,7 @@ require 'rails_jwt_auth/spec_helpers'
471
493
  ...
472
494
  RSpec.configure do |config|
473
495
  ...
474
- config.include RailsJwtAuth::SpecHelpers, :type => :controller
496
+ config.include RailsJwtAuth::SpecHelpers, type: :controller
475
497
  end
476
498
  ```
477
499
 
@@ -479,11 +501,11 @@ And then we can just call sign_in(user) to sign in as a user:
479
501
 
480
502
  ```ruby
481
503
  describe ExampleController
482
- it "blocks unauthenticated access" do
483
- expect { get :index }.to raise_error(RailsJwtAuth::Errors::NotAuthorized)
504
+ it 'blocks unauthenticated access' do
505
+ expect { get :index }.to raise_error(RailsJwtAuth::NotAuthorized)
484
506
  end
485
507
 
486
- it "allows authenticated access" do
508
+ it 'allows authenticated access' do
487
509
  sign_in user
488
510
  get :index
489
511
  expect(response).to be_success
@@ -6,18 +6,22 @@ module RailsJwtAuth
6
6
  @current_user
7
7
  end
8
8
 
9
+ def jwt_payload
10
+ @jwt_payload
11
+ end
12
+
9
13
  def signed_in?
10
14
  !current_user.nil?
11
15
  end
12
16
 
13
17
  def authenticate!
14
18
  begin
15
- payload = RailsJwtAuth::JwtManager.decode_from_request(request).first
19
+ @jwt_payload = RailsJwtAuth::JwtManager.decode_from_request(request).first
16
20
  rescue JWT::ExpiredSignature, JWT::VerificationError, JWT::DecodeError
17
21
  unauthorize!
18
22
  end
19
23
 
20
- if !@current_user = RailsJwtAuth.model.from_token_payload(payload)
24
+ if !@current_user = RailsJwtAuth.model.from_token_payload(@jwt_payload)
21
25
  unauthorize!
22
26
  elsif @current_user.respond_to? :update_tracked_fields!
23
27
  @current_user.update_tracked_fields!(request)
@@ -26,8 +30,8 @@ module RailsJwtAuth
26
30
 
27
31
  def authenticate
28
32
  begin
29
- payload = RailsJwtAuth::JwtManager.decode_from_request(request).first
30
- @current_user = RailsJwtAuth.model.from_token_payload(payload)
33
+ @jwt_payload = RailsJwtAuth::JwtManager.decode_from_request(request).first
34
+ @current_user = RailsJwtAuth.model.from_token_payload(@jwt_payload)
31
35
  rescue JWT::ExpiredSignature, JWT::VerificationError, JWT::DecodeError
32
36
  @current_user = nil
33
37
  end
@@ -9,7 +9,7 @@ module RailsJwtAuth
9
9
  end
10
10
 
11
11
  def confirmation_create_params
12
- params.require(:confirmation).permit(:email)
12
+ params.require(:confirmation).permit(RailsJwtAuth.email_field_name)
13
13
  end
14
14
 
15
15
  def session_create_params
@@ -17,7 +17,7 @@ module RailsJwtAuth
17
17
  end
18
18
 
19
19
  def password_create_params
20
- params.require(:password).permit(:email)
20
+ params.require(:password).permit(RailsJwtAuth.email_field_name)
21
21
  end
22
22
 
23
23
  def password_update_params
@@ -25,7 +25,7 @@ module RailsJwtAuth
25
25
  end
26
26
 
27
27
  def invitation_create_params
28
- params.require(:invitation).permit(:email)
28
+ params.require(:invitation).permit(RailsJwtAuth.email_field_name)
29
29
  end
30
30
 
31
31
  def invitation_update_params
@@ -4,7 +4,10 @@ module RailsJwtAuth
4
4
  include RenderHelper
5
5
 
6
6
  def create
7
- user = RailsJwtAuth.model.where(email: confirmation_create_params[:email]).first
7
+ user = RailsJwtAuth.model.where(
8
+ email: confirmation_create_params[RailsJwtAuth.email_field_name]
9
+ ).first
10
+
8
11
  return render_422(email: [{error: :not_found}]) unless user
9
12
 
10
13
  user.send_confirmation_instructions ? render_204 : render_422(user.errors.details)
@@ -4,6 +4,7 @@ module RailsJwtAuth
4
4
  include RenderHelper
5
5
 
6
6
  def create
7
+ authenticate!
7
8
  user = RailsJwtAuth.model.invite!(invitation_create_params)
8
9
  user.errors.empty? ? render_204 : render_422(user.errors.details)
9
10
  end
@@ -4,8 +4,17 @@ module RailsJwtAuth
4
4
  include RenderHelper
5
5
 
6
6
  def create
7
- user = RailsJwtAuth.model.where(email: password_create_params[:email].to_s.downcase).first
8
- return render_422(email: [{error: :not_found}]) unless user
7
+ email_field = RailsJwtAuth.email_field_name
8
+
9
+ if password_create_params[email_field].blank?
10
+ return render_422(email_field => [{error: :blank}])
11
+ end
12
+
13
+ user = RailsJwtAuth.model.where(
14
+ email_field => password_create_params[email_field].to_s.strip.downcase
15
+ ).first
16
+
17
+ return render_422(email_field => [{error: :not_found}]) unless user
9
18
 
10
19
  user.send_reset_password_instructions ? render_204 : render_422(user.errors.details)
11
20
  end
@@ -2,9 +2,13 @@ if defined?(ActionMailer)
2
2
  class RailsJwtAuth::Mailer < ApplicationMailer
3
3
  default from: RailsJwtAuth.mailer_sender
4
4
 
5
- def confirmation_instructions(user)
5
+ before_action do
6
+ @user = RailsJwtAuth.model.find(params[:user_id])
7
+ @subject = I18n.t("rails_jwt_auth.mailer.#{action_name}.subject")
8
+ end
9
+
10
+ def confirmation_instructions
6
11
  raise RailsJwtAuth::NotConfirmationsUrl unless RailsJwtAuth.confirmations_url.present?
7
- @user = user
8
12
 
9
13
  @confirmations_url = add_param_to_url(
10
14
  RailsJwtAuth.confirmations_url,
@@ -12,19 +16,15 @@ if defined?(ActionMailer)
12
16
  @user.confirmation_token
13
17
  )
14
18
 
15
- subject = I18n.t('rails_jwt_auth.mailer.confirmation_instructions.subject')
16
- mail(to: @user.unconfirmed_email || @user[RailsJwtAuth.email_field_name], subject: subject)
19
+ mail(to: @user.unconfirmed_email || @user[RailsJwtAuth.email_field_name], subject: @subject)
17
20
  end
18
21
 
19
- def email_changed(user)
20
- @user = user
21
- subject = I18n.t('rails_jwt_auth.mailer.email_changed.subject')
22
- mail(to: @user[RailsJwtAuth.email_field_name!], subject: subject)
22
+ def email_changed
23
+ mail(to: @user[RailsJwtAuth.email_field_name!], subject: @subject)
23
24
  end
24
25
 
25
- def reset_password_instructions(user)
26
+ def reset_password_instructions
26
27
  raise RailsJwtAuth::NotResetPasswordsUrl unless RailsJwtAuth.reset_passwords_url.present?
27
- @user = user
28
28
 
29
29
  @reset_passwords_url = add_param_to_url(
30
30
  RailsJwtAuth.reset_passwords_url,
@@ -32,13 +32,11 @@ if defined?(ActionMailer)
32
32
  @user.reset_password_token
33
33
  )
34
34
 
35
- subject = I18n.t('rails_jwt_auth.mailer.reset_password_instructions.subject')
36
- mail(to: @user[RailsJwtAuth.email_field_name], subject: subject)
35
+ mail(to: @user[RailsJwtAuth.email_field_name], subject: @subject)
37
36
  end
38
37
 
39
- def set_password_instructions(user)
38
+ def set_password_instructions
40
39
  raise RailsJwtAuth::NotSetPasswordsUrl unless RailsJwtAuth.set_passwords_url.present?
41
- @user = user
42
40
 
43
41
  @reset_passwords_url = add_param_to_url(
44
42
  RailsJwtAuth.set_passwords_url,
@@ -46,13 +44,11 @@ if defined?(ActionMailer)
46
44
  @user.reset_password_token
47
45
  )
48
46
 
49
- subject = I18n.t('rails_jwt_auth.mailer.set_password_instructions.subject')
50
- mail(to: @user[RailsJwtAuth.email_field_name], subject: subject)
47
+ mail(to: @user[RailsJwtAuth.email_field_name], subject: @subject)
51
48
  end
52
49
 
53
- def send_invitation(user)
50
+ def send_invitation
54
51
  raise RailsJwtAuth::NotInvitationsUrl unless RailsJwtAuth.invitations_url.present?
55
- @user = user
56
52
 
57
53
  @invitations_url = add_param_to_url(
58
54
  RailsJwtAuth.invitations_url,
@@ -60,17 +56,13 @@ if defined?(ActionMailer)
60
56
  @user.invitation_token
61
57
  )
62
58
 
63
- subject = I18n.t('rails_jwt_auth.mailer.send_invitation.subject')
64
- mail(to: @user[RailsJwtAuth.email_field_name], subject: subject)
59
+ mail(to: @user[RailsJwtAuth.email_field_name], subject: @subject)
65
60
  end
66
61
 
67
- def send_unlock_instructions(user)
68
- @user = user
69
- subject = I18n.t('rails_jwt_auth.mailer.send_unlock_instructions.subject')
70
-
62
+ def send_unlock_instructions
71
63
  @unlock_url = add_param_to_url(RailsJwtAuth.unlock_url, 'unlock_token', @user.unlock_token)
72
64
 
73
- mail(to: @user[RailsJwtAuth.email_field_name], subject: subject)
65
+ mail(to: @user[RailsJwtAuth.email_field_name], subject: @subject)
74
66
  end
75
67
 
76
68
  protected
@@ -46,8 +46,10 @@ module RailsJwtAuth
46
46
  'invalid'
47
47
  end
48
48
 
49
- # abort reset password if exists to allow save
50
- self.reset_password_token = self.reset_password_sent_at = nil if reset_password_token
49
+ # if recoberable module is enabled ensure clean recovery to allow save
50
+ if self.respond_to? :reset_password_token
51
+ self.reset_password_token = self.reset_password_sent_at = nil
52
+ end
51
53
 
52
54
  assign_attributes(params)
53
55
  valid? # validates first other fields
@@ -33,16 +33,14 @@ module RailsJwtAuth
33
33
 
34
34
  self.confirmation_token = SecureRandom.base58(24)
35
35
  self.confirmation_sent_at = Time.current
36
-
37
- mailer = Mailer.confirmation_instructions(self)
38
- RailsJwtAuth.deliver_later ? mailer.deliver_later : mailer.deliver
39
-
40
- if RailsJwtAuth.send_email_changed_notification
41
- mailer = Mailer.email_changed(self)
42
- RailsJwtAuth.deliver_later ? mailer.deliver_later : mailer.deliver
43
- end
44
36
  end
45
37
  end
38
+
39
+ if defined?(ActiveRecord) && ancestors.include?(ActiveRecord::Base)
40
+ after_commit :deliver_email_changed_emails, if: :saved_change_to_unconfirmed_email?
41
+ elsif defined?(Mongoid) && ancestors.include?(Mongoid::Document)
42
+ after_update :deliver_email_changed_emails, if: :unconfirmed_email_changed?
43
+ end
46
44
  end
47
45
  end
48
46
 
@@ -58,8 +56,7 @@ module RailsJwtAuth
58
56
  self.confirmation_sent_at = Time.current
59
57
  return false unless save
60
58
 
61
- mailer = Mailer.confirmation_instructions(self)
62
- RailsJwtAuth.deliver_later ? mailer.deliver_later : mailer.deliver
59
+ RailsJwtAuth.send_email(:confirmation_instructions, self)
63
60
  true
64
61
  end
65
62
 
@@ -72,9 +69,15 @@ module RailsJwtAuth
72
69
  self.confirmation_token = nil
73
70
 
74
71
  if unconfirmed_email
75
- self[RailsJwtAuth.email_field_name!] = unconfirmed_email
76
- self.email_confirmation = unconfirmed_email if respond_to?(:email_confirmation)
72
+ email_field = RailsJwtAuth.email_field_name!
73
+
74
+ self[email_field] = unconfirmed_email
77
75
  self.unconfirmed_email = nil
76
+
77
+ # supports email confirmation attr_accessor validation
78
+ if respond_to?("#{email_field}_confirmation")
79
+ instance_variable_set("@#{email_field}_confirmation", self[email_field])
80
+ end
78
81
  end
79
82
 
80
83
  save
@@ -89,6 +92,7 @@ module RailsJwtAuth
89
92
 
90
93
  def validate_confirmation
91
94
  return true unless confirmed_at
95
+
92
96
  email_field = RailsJwtAuth.email_field_name!
93
97
 
94
98
  if confirmed_at_was && !public_send("#{email_field}_changed?")
@@ -98,5 +102,15 @@ module RailsJwtAuth
98
102
  errors.add(:confirmation_token, :expired)
99
103
  end
100
104
  end
105
+
106
+ def deliver_email_changed_emails
107
+ # send confirmation to new email
108
+ RailsJwtAuth.send_email(:confirmation_instructions, self)
109
+
110
+ # send notify to old email
111
+ if RailsJwtAuth.send_email_changed_notification
112
+ RailsJwtAuth.send_email(:email_changed, self)
113
+ end
114
+ end
101
115
  end
102
116
  end
@@ -112,9 +112,8 @@ module RailsJwtAuth
112
112
  end
113
113
 
114
114
  def send_invitation_mail
115
- RailsJwtAuth.email_field_name! # ensure email field es valid
116
- mailer = Mailer.send_invitation(self)
117
- RailsJwtAuth.deliver_later ? mailer.deliver_later : mailer.deliver
115
+ RailsJwtAuth.email_field_name! # ensure email field is valid
116
+ RailsJwtAuth.send_email(:send_invitation, self)
118
117
  end
119
118
 
120
119
  def invitation_period_valid?
@@ -68,8 +68,7 @@ module RailsJwtAuth
68
68
  self.unlock_token = SecureRandom.base58(24)
69
69
  save(validate: false)
70
70
 
71
- mailer = Mailer.send_unlock_instructions(self)
72
- RailsJwtAuth.deliver_later ? mailer.deliver_later : mailer.deliver
71
+ RailsJwtAuth.send_email(:send_unlock_instructions, self)
73
72
  end
74
73
 
75
74
  def access_locked?
@@ -14,7 +14,10 @@ module RailsJwtAuth
14
14
  validate :validate_reset_password_token, if: :password_digest_changed?
15
15
 
16
16
  before_update do
17
- self.reset_password_token = nil if password_digest_changed? && reset_password_token
17
+ if password_digest_changed? && reset_password_token
18
+ self.reset_password_token = nil
19
+ self.auth_tokens = []
20
+ end
18
21
  end
19
22
  end
20
23
  end
@@ -37,8 +40,7 @@ module RailsJwtAuth
37
40
  self.reset_password_sent_at = Time.current
38
41
  return false unless save
39
42
 
40
- mailer = Mailer.reset_password_instructions(self)
41
- RailsJwtAuth.deliver_later ? mailer.deliver_later : mailer.deliver
43
+ RailsJwtAuth.send_email(:reset_password_instructions, self)
42
44
  end
43
45
 
44
46
  def set_and_send_password_instructions
@@ -53,8 +55,7 @@ module RailsJwtAuth
53
55
  self.reset_password_sent_at = Time.current
54
56
  return false unless save
55
57
 
56
- mailer = Mailer.set_password_instructions(self)
57
- RailsJwtAuth.deliver_later ? mailer.deliver_later : mailer.deliver
58
+ RailsJwtAuth.send_email(:set_password_instructions, self)
58
59
  true
59
60
  end
60
61
 
@@ -114,4 +114,9 @@ module RailsJwtAuth
114
114
 
115
115
  field_name
116
116
  end
117
+
118
+ def self.send_email(method, user)
119
+ mailer = RailsJwtAuth::Mailer.with(user_id: user.id.to_s).public_send(method)
120
+ RailsJwtAuth.deliver_later ? mailer.deliver_later : mailer.deliver
121
+ end
117
122
  end
@@ -1,3 +1,3 @@
1
1
  module RailsJwtAuth
2
- VERSION = '1.4.1'
2
+ VERSION = '1.7.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_jwt_auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - rjurado
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-11 00:00:00.000000000 Z
11
+ date: 2020-06-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bcrypt
@@ -120,8 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
120
  - !ruby/object:Gem::Version
121
121
  version: '0'
122
122
  requirements: []
123
- rubyforge_project:
124
- rubygems_version: 2.7.3
123
+ rubygems_version: 3.0.3
125
124
  signing_key:
126
125
  specification_version: 4
127
126
  summary: Rails jwt authentication.