rails_jwt_auth 0.23.2 → 1.0.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.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +77 -219
  3. data/app/controllers/concerns/rails_jwt_auth/authenticable_helper.rb +31 -0
  4. data/app/controllers/rails_jwt_auth/confirmations_controller.rb +3 -6
  5. data/app/controllers/rails_jwt_auth/invitations_controller.rb +5 -8
  6. data/app/controllers/rails_jwt_auth/passwords_controller.rb +3 -7
  7. data/app/controllers/rails_jwt_auth/sessions_controller.rb +13 -9
  8. data/app/mailers/rails_jwt_auth/mailer.rb +32 -47
  9. data/app/models/concerns/rails_jwt_auth/authenticatable.rb +31 -25
  10. data/app/models/concerns/rails_jwt_auth/confirmable.rb +54 -47
  11. data/app/models/concerns/rails_jwt_auth/invitable.rb +10 -11
  12. data/app/models/concerns/rails_jwt_auth/recoverable.rb +29 -28
  13. data/app/models/concerns/rails_jwt_auth/trackable.rb +1 -1
  14. data/app/views/rails_jwt_auth/mailer/confirmation_instructions.html.erb +2 -2
  15. data/app/views/rails_jwt_auth/mailer/reset_password_instructions.html.erb +2 -2
  16. data/app/views/rails_jwt_auth/mailer/send_invitation.html.erb +2 -2
  17. data/app/views/rails_jwt_auth/mailer/set_password_instructions.html.erb +2 -2
  18. data/lib/generators/rails_jwt_auth/install_generator.rb +4 -5
  19. data/lib/generators/rails_jwt_auth/migrate_generator.rb +17 -0
  20. data/lib/generators/templates/initializer.rb +15 -18
  21. data/lib/generators/templates/migration.rb +29 -0
  22. data/lib/rails_jwt_auth.rb +54 -20
  23. data/lib/rails_jwt_auth/engine.rb +0 -21
  24. data/lib/rails_jwt_auth/jwt_manager.rb +33 -0
  25. data/lib/rails_jwt_auth/spec_helpers.rb +15 -0
  26. data/lib/rails_jwt_auth/version.rb +1 -1
  27. metadata +8 -10
  28. data/app/controllers/concerns/rails_jwt_auth/warden_helper.rb +0 -29
  29. data/lib/rails_jwt_auth/jwt/manager.rb +0 -41
  30. data/lib/rails_jwt_auth/jwt/request.rb +0 -34
  31. data/lib/rails_jwt_auth/spec/helpers.rb +0 -17
  32. data/lib/rails_jwt_auth/spec/not_authorized.rb +0 -6
  33. data/lib/rails_jwt_auth/strategies/jwt.rb +0 -17
  34. data/lib/tasks/rails_token_jwt_tasks.rake +0 -4
@@ -1,3 +1,3 @@
1
1
  module RailsJwtAuth
2
- VERSION = '0.23.2'
2
+ VERSION = '1.0.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: 0.23.2
4
+ version: 1.0.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-02-20 00:00:00.000000000 Z
11
+ date: 2018-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bcrypt
@@ -77,9 +77,9 @@ files:
77
77
  - MIT-LICENSE
78
78
  - README.md
79
79
  - Rakefile
80
+ - app/controllers/concerns/rails_jwt_auth/authenticable_helper.rb
80
81
  - app/controllers/concerns/rails_jwt_auth/params_helper.rb
81
82
  - app/controllers/concerns/rails_jwt_auth/render_helper.rb
82
- - app/controllers/concerns/rails_jwt_auth/warden_helper.rb
83
83
  - app/controllers/rails_jwt_auth/confirmations_controller.rb
84
84
  - app/controllers/rails_jwt_auth/invitations_controller.rb
85
85
  - app/controllers/rails_jwt_auth/passwords_controller.rb
@@ -99,16 +99,14 @@ files:
99
99
  - app/views/rails_jwt_auth/mailer/set_password_instructions.html.erb
100
100
  - config/locales/en.yml
101
101
  - lib/generators/rails_jwt_auth/install_generator.rb
102
+ - lib/generators/rails_jwt_auth/migrate_generator.rb
102
103
  - lib/generators/templates/initializer.rb
104
+ - lib/generators/templates/migration.rb
103
105
  - lib/rails_jwt_auth.rb
104
106
  - lib/rails_jwt_auth/engine.rb
105
- - lib/rails_jwt_auth/jwt/manager.rb
106
- - lib/rails_jwt_auth/jwt/request.rb
107
- - lib/rails_jwt_auth/spec/helpers.rb
108
- - lib/rails_jwt_auth/spec/not_authorized.rb
109
- - lib/rails_jwt_auth/strategies/jwt.rb
107
+ - lib/rails_jwt_auth/jwt_manager.rb
108
+ - lib/rails_jwt_auth/spec_helpers.rb
110
109
  - lib/rails_jwt_auth/version.rb
111
- - lib/tasks/rails_token_jwt_tasks.rake
112
110
  homepage: https://github.com/rjurado01/rails_jwt_auth
113
111
  licenses:
114
112
  - MIT
@@ -129,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
129
127
  version: '0'
130
128
  requirements: []
131
129
  rubyforge_project:
132
- rubygems_version: 2.7.3
130
+ rubygems_version: 2.7.6
133
131
  signing_key:
134
132
  specification_version: 4
135
133
  summary: Rails jwt authentication.
@@ -1,29 +0,0 @@
1
- module RailsJwtAuth
2
- module WardenHelper
3
- def signed_in?
4
- !current_user.nil?
5
- end
6
-
7
- def current_user
8
- warden&.user
9
- end
10
-
11
- def warden
12
- request.env['warden']
13
- end
14
-
15
- def authenticate!
16
- warden.authenticate!(store: false)
17
- end
18
-
19
- def self.included(base)
20
- return unless Rails.env.test? && base.name == 'ApplicationController'
21
-
22
- return unless defined?(RailsJwtAuth::Spec::NotAuthorized)
23
-
24
- base.send(:rescue_from, RailsJwtAuth::Spec::NotAuthorized) do
25
- render json: {}, status: 401
26
- end
27
- end
28
- end
29
- end
@@ -1,41 +0,0 @@
1
- require 'jwt'
2
-
3
- module RailsJwtAuth
4
- module Jwt
5
- class Manager
6
- def self.secret_key_base
7
- Rails.application.secrets.secret_key_base || Rails.application.credentials.secret_key_base
8
- end
9
-
10
- # Encodes and signs JWT Payload with expiration
11
- def self.encode(payload)
12
- payload.reverse_merge!(meta)
13
- JWT.encode(payload, secret_key_base)
14
- end
15
-
16
- # Decodes the JWT with the signed secret
17
- # [{"auth_token"=>"xxx", "exp"=>148..., "iss"=>"RJA"}, {"typ"=>"JWT", "alg"=>"HS256"}]
18
- def self.decode(token)
19
- JWT.decode(token, secret_key_base)
20
- end
21
-
22
- # Validates the payload hash for expiration and meta claims
23
- def self.valid_payload?(payload)
24
- payload && !expired?(payload) && payload['iss'] == meta[:iss]
25
- end
26
-
27
- # Default options to be encoded in the token
28
- def self.meta
29
- {
30
- exp: RailsJwtAuth.jwt_expiration_time.from_now.to_i,
31
- iss: RailsJwtAuth.jwt_issuer
32
- }
33
- end
34
-
35
- # Validates if the token is expired by exp parameter
36
- def self.expired?(payload)
37
- Time.at(payload['exp']) < Time.now
38
- end
39
- end
40
- end
41
- end
@@ -1,34 +0,0 @@
1
- require 'rails_jwt_auth/jwt/manager'
2
-
3
- module RailsJwtAuth
4
- module Jwt
5
- class Request
6
- def initialize(request)
7
- return unless request.env['HTTP_AUTHORIZATION']
8
- @jwt = request.env['HTTP_AUTHORIZATION'].split.last
9
-
10
- begin
11
- @jwt_info = RailsJwtAuth::Jwt::Manager.decode(@jwt)
12
- rescue JWT::ExpiredSignature, JWT::VerificationError
13
- @jwt_info = false
14
- end
15
- end
16
-
17
- def valid?
18
- @jwt && @jwt_info && RailsJwtAuth::Jwt::Manager.valid_payload?(payload)
19
- end
20
-
21
- def payload
22
- @jwt_info ? @jwt_info[0] : nil
23
- end
24
-
25
- def header
26
- @jwt_info ? @jwt_info[1] : nil
27
- end
28
-
29
- def auth_token
30
- payload ? payload['auth_token'] : nil
31
- end
32
- end
33
- end
34
- end
@@ -1,17 +0,0 @@
1
- module RailsJwtAuth
2
- module Spec
3
- module Helpers
4
- require 'rails_jwt_auth/spec/not_authorized'
5
-
6
- def sign_out
7
- allow(controller).to receive(:authenticate!).and_raise(RailsJwtAuth::Spec::NotAuthorized)
8
- end
9
-
10
- def sign_in(user)
11
- manager = Warden::Manager.new(nil, &Rails.application.config.middleware.detect{|m| m.name == 'Warden::Manager'}.block)
12
- request.env['warden'] = Warden::Proxy.new(request.env, manager)
13
- request.env['warden'].set_user(user, store: false)
14
- end
15
- end
16
- end
17
- end
@@ -1,6 +0,0 @@
1
- module RailsJwtAuth
2
- module Spec
3
- class NotAuthorized < StandardError
4
- end
5
- end
6
- end
@@ -1,17 +0,0 @@
1
- require 'rails_jwt_auth/jwt/request'
2
-
3
- module RailsJwtAuth
4
- module Strategies
5
- class Jwt < ::Warden::Strategies::Base
6
- def authenticate!
7
- jwt = RailsJwtAuth::Jwt::Request.new(request)
8
-
9
- if jwt.valid? && (model = RailsJwtAuth.model.get_by_token(jwt.auth_token))
10
- return success!(model)
11
- end
12
-
13
- fail!('strategies.authentication_token.failed')
14
- end
15
- end
16
- end
17
- end
@@ -1,4 +0,0 @@
1
- # desc "Explaining what the task does"
2
- # task :rails_jwt_auth do
3
- # # Task goes here
4
- # end