rails_jwt_auth 1.4.0 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 69a475be8d5dab54fa47660b2f4b8679cae86ad9b55c94aaa03c203eed2ea77c
4
- data.tar.gz: bfb0807d0ac1ae764ce96da16343e793585d69379cc262be1082cbe67658d166
3
+ metadata.gz: bc1754797f099cba50a36044a69225fbeffee8e01120b9aa394209761d30eaf4
4
+ data.tar.gz: da443b714e8d7af7fb687a66e46fc6f3a46feb8837239debd1d16c76c34a49dc
5
5
  SHA512:
6
- metadata.gz: 65c67921e7cc2a63f219b583716a75b7b1a6fbf8d149f25a7e4163414fc1a9243c3d43b10c028b8020ae6944833cfd649aec5f4bd6f6b3bb71d0852c8832f294
7
- data.tar.gz: 13dfac135db5c7bd74c6bb49bfe0bff51196190037e11c500e1fa7ad9531d3b4cabfb1aa5b5d208e962db3b058539eb8ae22db526343042d2f814d9c4b871f10
6
+ metadata.gz: f72dd3b12df746bd2d95291090b5e5f4dce0c0cdcba429b4de5ac2290c811e55637790cbbbb93209bf8184ae9a827986b1000b3d8c9fb834f2151e9b610ba993
7
+ data.tar.gz: 68a3963c17ef09d9225550a79f3989572e5edb8b4c7023d40fca80b647c06c1cdd2848a0bbe76d0d11a339ffc88801d80f7f131ab829ddbb3ef60dabf6a2168a
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # RailsJwtAuth
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/rails_jwt_auth.svg)](https://badge.fury.io/rb/rails_jwt_auth)
3
+ ![Gem Version](https://badge.fury.io/rb/rails_jwt_auth.svg)
4
4
  ![Build Status](https://travis-ci.org/rjurado01/rails_jwt_auth.svg?branch=master)
5
5
 
6
6
  Rails-API authentication solution based on JWT and inspired by Devise.
@@ -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,36 +253,26 @@ 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
  }
242
261
  ```
243
262
 
244
- 2. Delete user:
245
-
246
- ```js
247
- {
248
- url: host/registration,
249
- method: DELETE,
250
- headers: { 'Authorization': 'Bearer auth_token'}
251
- }
252
- ```
253
-
254
263
  ### Confirmation
255
264
 
256
265
  Confirmation api is defined by `RailsJwtAuth::ConfirmationsController`.
257
266
 
267
+ It is necessary to set a value for `confirmations_url` option into `config/initializers/rails_jwt_auth.rb`.
268
+
258
269
  1. Confirm user:
259
270
 
260
271
  ```js
261
272
  {
262
- url: host/confirmation,
273
+ url: host/confirmations/:token,
263
274
  method: PUT
264
- data: {
265
- confirmation_token: "token"
266
- }
275
+ data: {}
267
276
  }
268
277
  ```
269
278
 
@@ -271,11 +280,11 @@ Confirmation api is defined by `RailsJwtAuth::ConfirmationsController`.
271
280
 
272
281
  ```js
273
282
  {
274
- url: host/confirmation,
283
+ url: host/confirmations,
275
284
  method: POST,
276
285
  data: {
277
286
  confirmation: {
278
- email: "user@example.com"
287
+ email: 'user@example.com'
279
288
  }
280
289
  }
281
290
  }
@@ -289,11 +298,11 @@ Password api is defined by `RailsJwtAuth::PasswordsController`.
289
298
 
290
299
  ```js
291
300
  {
292
- url: host/password,
301
+ url: host/passwords,
293
302
  method: POST,
294
303
  data: {
295
304
  password: {
296
- email: "user@example.com"
305
+ email: 'user@example.com'
297
306
  }
298
307
  }
299
308
  }
@@ -303,10 +312,9 @@ Password api is defined by `RailsJwtAuth::PasswordsController`.
303
312
 
304
313
  ```js
305
314
  {
306
- url: host/password,
315
+ url: host/passwords/:token,
307
316
  method: PUT,
308
317
  data: {
309
- reset_password_token: "token",
310
318
  password: {
311
319
  password: '1234',
312
320
  password_confirmation: '1234'
@@ -327,7 +335,7 @@ Invitations api is provided by `RailsJwtAuth::InvitationsController`.
327
335
  method: POST,
328
336
  data: {
329
337
  invitation: {
330
- email: "user@example.com",
338
+ email: 'user@example.com',
331
339
  // More fields of your user
332
340
  }
333
341
  }
@@ -360,7 +368,8 @@ Unlock api is provided by `RailsJwtAuth::UnlocksController`.
360
368
  ```js
361
369
  {
362
370
  url: host/unlocks/:unlock_token,
363
- method: PUT
371
+ method: PUT,
372
+ data: {}
364
373
  }
365
374
  ```
366
375
 
@@ -436,7 +445,10 @@ class CurrentUserController < ApplicationController
436
445
 
437
446
  def update
438
447
  if update_params[:password]
439
- 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
+ )
440
452
  else
441
453
  current_user.update_attributes(update_params)
442
454
  end
@@ -481,7 +493,7 @@ require 'rails_jwt_auth/spec_helpers'
481
493
  ...
482
494
  RSpec.configure do |config|
483
495
  ...
484
- config.include RailsJwtAuth::SpecHelpers, :type => :controller
496
+ config.include RailsJwtAuth::SpecHelpers, type: :controller
485
497
  end
486
498
  ```
487
499
 
@@ -489,11 +501,11 @@ And then we can just call sign_in(user) to sign in as a user:
489
501
 
490
502
  ```ruby
491
503
  describe ExampleController
492
- it "blocks unauthenticated access" do
493
- expect { get :index }.to raise_error(RailsJwtAuth::Errors::NotAuthorized)
504
+ it 'blocks unauthenticated access' do
505
+ expect { get :index }.to raise_error(RailsJwtAuth::NotAuthorized)
494
506
  end
495
507
 
496
- it "allows authenticated access" do
508
+ it 'allows authenticated access' do
497
509
  sign_in user
498
510
  get :index
499
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
@@ -34,12 +34,10 @@ module RailsJwtAuth
34
34
  self.confirmation_token = SecureRandom.base58(24)
35
35
  self.confirmation_sent_at = Time.current
36
36
 
37
- mailer = Mailer.confirmation_instructions(self)
38
- RailsJwtAuth.deliver_later ? mailer.deliver_later : mailer.deliver
37
+ RailsJwtAuth.send_email(:confirmation_instructions, self)
39
38
 
40
39
  if RailsJwtAuth.send_email_changed_notification
41
- mailer = Mailer.email_changed(self)
42
- RailsJwtAuth.deliver_later ? mailer.deliver_later : mailer.deliver
40
+ RailsJwtAuth.send_email(:email_changed, self)
43
41
  end
44
42
  end
45
43
  end
@@ -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
+ self.instance_variable_set("@#{email_field}_confirmation", self[email_field])
80
+ end
78
81
  end
79
82
 
80
83
  save
@@ -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
 
@@ -6,8 +6,8 @@ class RailsJwtAuth::InstallGenerator < Rails::Generators::Base
6
6
  end
7
7
 
8
8
  def create_routes
9
- route "resources :session, controller: 'rails_jwt_auth/sessions', only: [:create, :destroy]"
10
- route "resources :registration, controller: 'rails_jwt_auth/registrations', only: [:create, :update, :destroy]"
9
+ route "resource :session, controller: 'rails_jwt_auth/sessions', only: [:create, :destroy]"
10
+ route "resource :registration, controller: 'rails_jwt_auth/registrations', only: [:create]"
11
11
 
12
12
  route "resources :confirmations, controller: 'rails_jwt_auth/confirmations', only: [:create, :update]"
13
13
  route "resources :passwords, controller: 'rails_jwt_auth/passwords', only: [:create, :update]"
@@ -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.0'
2
+ VERSION = '1.7.0'
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.0
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - rjurado
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-16 00:00:00.000000000 Z
11
+ date: 2020-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bcrypt
@@ -58,8 +58,7 @@ dependencies:
58
58
  - - "<"
59
59
  - !ruby/object:Gem::Version
60
60
  version: '6.1'
61
- description: Rails authentication solution based on Warden and JWT and inspired by
62
- Devise.
61
+ description: Rails-API authentication solution based on JWT and inspired by Devise.
63
62
  email:
64
63
  - rjurado@openmailbox.org
65
64
  executables: []
@@ -121,8 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
120
  - !ruby/object:Gem::Version
122
121
  version: '0'
123
122
  requirements: []
124
- rubyforge_project:
125
- rubygems_version: 2.7.3
123
+ rubygems_version: 3.0.3
126
124
  signing_key:
127
125
  specification_version: 4
128
126
  summary: Rails jwt authentication.