class RailsJwtAuth::Session
Constants
- Errors
Attributes
errors[R]
jwt[R]
user[R]
Public Class Methods
new(params={})
click to toggle source
# File lib/rails_jwt_auth/session.rb, line 7 def initialize(params={}) @auth_field_value = (params[RailsJwtAuth.auth_field_name] || '').strip @auth_field_value.downcase! if RailsJwtAuth.downcase_auth_field @password = params[:password] find_user if @auth_field_value.present? end
Public Instance Methods
generate!(request)
click to toggle source
# File lib/rails_jwt_auth/session.rb, line 21 def generate!(request) if valid? user.clean_reset_password if recoverable? user.clean_lock if lockable? user.track_session_info(request) if trackable? user.load_auth_token unless user.save add_error(RailsJwtAuth.model_name.underscore, :invalid) return false end generate_jwt(request) true else user.failed_attempt if lockable? false end end
valid?()
click to toggle source
# File lib/rails_jwt_auth/session.rb, line 15 def valid? validate! !errors? end
Private Instance Methods
add_error(field, detail)
click to toggle source
# File lib/rails_jwt_auth/session.rb, line 115 def add_error(field, detail) @errors.details[field.to_sym] ||= [] @errors.details[field.to_sym].push({error: detail}) end
confirmable?()
click to toggle source
# File lib/rails_jwt_auth/session.rb, line 63 def confirmable? @user&.kind_of?(RailsJwtAuth::Confirmable) end
errors?()
click to toggle source
# File lib/rails_jwt_auth/session.rb, line 120 def errors? @errors.details.any? end
field_error(field)
click to toggle source
# File lib/rails_jwt_auth/session.rb, line 83 def field_error(field) RailsJwtAuth.avoid_email_errors ? :session : field end
find_user()
click to toggle source
# File lib/rails_jwt_auth/session.rb, line 59 def find_user @user = RailsJwtAuth.model.where(RailsJwtAuth.auth_field_name => @auth_field_value).first end
generate_jwt(request)
click to toggle source
# File lib/rails_jwt_auth/session.rb, line 124 def generate_jwt(request) @jwt = JwtManager.encode(user.to_token_payload(request)) end
lockable?()
click to toggle source
# File lib/rails_jwt_auth/session.rb, line 67 def lockable? @user&.kind_of?(RailsJwtAuth::Lockable) end
recoverable?()
click to toggle source
# File lib/rails_jwt_auth/session.rb, line 71 def recoverable? @user&.kind_of?(RailsJwtAuth::Recoverable) end
trackable?()
click to toggle source
# File lib/rails_jwt_auth/session.rb, line 75 def trackable? @user&.kind_of?(RailsJwtAuth::Trackable) end
user?()
click to toggle source
# File lib/rails_jwt_auth/session.rb, line 79 def user? @user.present? end
validate!()
click to toggle source
# File lib/rails_jwt_auth/session.rb, line 46 def validate! # Can't use ActiveModel::Validations since we have dynamic fields @errors = Errors.new({}) validate_auth_field_presence validate_password_presence validate_user_exist validate_user_is_confirmed if confirmable? validate_user_is_not_locked if lockable? validate_user_password unless errors? validate_custom end
validate_auth_field_presence()
click to toggle source
# File lib/rails_jwt_auth/session.rb, line 87 def validate_auth_field_presence add_error(RailsJwtAuth.auth_field_name, :blank) if @auth_field_value.blank? end
validate_custom()
click to toggle source
# File lib/rails_jwt_auth/session.rb, line 111 def validate_custom # allow add custom validations overwriting this method end
validate_password_presence()
click to toggle source
# File lib/rails_jwt_auth/session.rb, line 91 def validate_password_presence add_error(:password, :blank) if @password.blank? end
validate_user_exist()
click to toggle source
# File lib/rails_jwt_auth/session.rb, line 95 def validate_user_exist add_error(field_error(RailsJwtAuth.auth_field_name), :invalid) unless @user end
validate_user_is_confirmed()
click to toggle source
# File lib/rails_jwt_auth/session.rb, line 103 def validate_user_is_confirmed add_error(RailsJwtAuth.email_field_name, :unconfirmed) unless @user.confirmed? end
validate_user_is_not_locked()
click to toggle source
# File lib/rails_jwt_auth/session.rb, line 107 def validate_user_is_not_locked add_error(RailsJwtAuth.email_field_name, :locked) if @user.access_locked? end
validate_user_password()
click to toggle source
# File lib/rails_jwt_auth/session.rb, line 99 def validate_user_password add_error(field_error(:password), :invalid) unless @user.authenticate(@password) end