rails_jwt_auth 0.18.1 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +161 -242
  3. data/app/controllers/concerns/rails_jwt_auth/authenticable_helper.rb +44 -0
  4. data/app/controllers/concerns/rails_jwt_auth/params_helper.rb +1 -3
  5. data/app/controllers/concerns/rails_jwt_auth/render_helper.rb +4 -0
  6. data/app/controllers/rails_jwt_auth/confirmations_controller.rb +6 -9
  7. data/app/controllers/rails_jwt_auth/invitations_controller.rb +8 -9
  8. data/app/controllers/rails_jwt_auth/passwords_controller.rb +8 -16
  9. data/app/controllers/rails_jwt_auth/registrations_controller.rb +1 -1
  10. data/app/controllers/rails_jwt_auth/sessions_controller.rb +14 -15
  11. data/app/mailers/rails_jwt_auth/mailer.rb +30 -39
  12. data/app/models/concerns/rails_jwt_auth/authenticatable.rb +44 -32
  13. data/app/models/concerns/rails_jwt_auth/confirmable.rb +59 -47
  14. data/app/models/concerns/rails_jwt_auth/invitable.rb +36 -34
  15. data/app/models/concerns/rails_jwt_auth/recoverable.rb +28 -27
  16. data/app/models/concerns/rails_jwt_auth/trackable.rb +1 -1
  17. data/app/views/rails_jwt_auth/mailer/confirmation_instructions.html.erb +2 -2
  18. data/app/views/rails_jwt_auth/mailer/email_changed.html.erb +3 -0
  19. data/app/views/rails_jwt_auth/mailer/reset_password_instructions.html.erb +2 -2
  20. data/app/views/rails_jwt_auth/mailer/send_invitation.html.erb +2 -2
  21. data/app/views/rails_jwt_auth/mailer/set_password_instructions.html.erb +2 -2
  22. data/config/locales/en.yml +2 -17
  23. data/lib/generators/rails_jwt_auth/install_generator.rb +6 -7
  24. data/lib/generators/rails_jwt_auth/migrate_generator.rb +17 -0
  25. data/lib/generators/templates/initializer.rb +17 -21
  26. data/lib/generators/templates/migration.rb +29 -0
  27. data/lib/rails_jwt_auth/engine.rb +0 -21
  28. data/lib/rails_jwt_auth/jwt_manager.rb +33 -0
  29. data/lib/rails_jwt_auth/spec_helpers.rb +19 -0
  30. data/lib/rails_jwt_auth/version.rb +1 -1
  31. data/lib/rails_jwt_auth.rb +67 -30
  32. metadata +25 -35
  33. data/app/controllers/concerns/rails_jwt_auth/warden_helper.rb +0 -27
  34. data/app/validators/email_validator.rb +0 -7
  35. data/lib/rails_jwt_auth/jwt/manager.rb +0 -37
  36. data/lib/rails_jwt_auth/jwt/request.rb +0 -34
  37. data/lib/rails_jwt_auth/spec/helpers.rb +0 -17
  38. data/lib/rails_jwt_auth/spec/not_authorized.rb +0 -6
  39. data/lib/rails_jwt_auth/strategies/jwt.rb +0 -17
  40. data/lib/tasks/rails_token_jwt_tasks.rake +0 -4
@@ -1,27 +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
- base.send(:rescue_from, RailsJwtAuth::Spec::NotAuthorized) do
23
- render json: {}, status: 401
24
- end
25
- end
26
- end
27
- end
@@ -1,7 +0,0 @@
1
- class EmailValidator < ActiveModel::EachValidator
2
- def validate_each(record, attribute, value)
3
- unless value =~ RailsJwtAuth.email_regex
4
- record.errors[attribute] << (options[:message] || I18n.t('rails_jwt_auth.errors.email.invalid'))
5
- end
6
- end
7
- end
@@ -1,37 +0,0 @@
1
- require 'jwt'
2
-
3
- module RailsJwtAuth
4
- module Jwt
5
- class Manager
6
- # Encodes and signs JWT Payload with expiration
7
- def self.encode(payload)
8
- payload.reverse_merge!(meta)
9
- JWT.encode(payload, Rails.application.secrets.secret_key_base)
10
- end
11
-
12
- # Decodes the JWT with the signed secret
13
- # [{"auth_token"=>"xxx", "exp"=>148..., "iss"=>"RJA"}, {"typ"=>"JWT", "alg"=>"HS256"}]
14
- def self.decode(token)
15
- JWT.decode(token, Rails.application.secrets.secret_key_base)
16
- end
17
-
18
- # Validates the payload hash for expiration and meta claims
19
- def self.valid_payload?(payload)
20
- payload && !expired?(payload) && payload['iss'] == meta[:iss]
21
- end
22
-
23
- # Default options to be encoded in the token
24
- def self.meta
25
- {
26
- exp: RailsJwtAuth.jwt_expiration_time.from_now.to_i,
27
- iss: RailsJwtAuth.jwt_issuer
28
- }
29
- end
30
-
31
- # Validates if the token is expired by exp parameter
32
- def self.expired?(payload)
33
- Time.at(payload['exp']) < Time.now
34
- end
35
- end
36
- end
37
- 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