class Devise::Strategies::PKCS12Authenticatable

Public Instance Methods

authenticate!() click to toggle source

rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Lint/AssignmentInCondition,Style/Semicolon,Metrics/LineLength

# File lib/devise_pkcs12_authenticatable/strategy.rb, line 9
def authenticate!
  opts      = authentication_hash.merge(Hash[::Devise.pkcs12_common_name_field, common_name])
  resource  = password.present? && mapping.to.find_for_pkcs12_authentication(opts)
  encrypted = false

  if validate(resource) { encrypted = true; resource.valid_password?(password) } && resource.valid_common_name?(common_name)
    remember_me(resource)
    resource.after_database_authentication
    success!(resource)
  end

  mapping.to.new.password = password if !encrypted && Devise.paranoid

  fail!(:not_found_in_database) unless resource
end
valid?() click to toggle source

rubocop:enable Metrics/AbcSize,Metrics/CyclomaticComplexity,Lint/AssignmentInCondition,Style/Semicolon,Metrics/LineLength

Calls superclass method
# File lib/devise_pkcs12_authenticatable/strategy.rb, line 26
def valid?
  super && client_verify?
end

Protected Instance Methods

client_verify?() click to toggle source
# File lib/devise_pkcs12_authenticatable/strategy.rb, line 36
def client_verify?
  case request.headers['X-CLIENT-VERIFY'].upcase
  when 'SUCCESS'
    true
  else
    false
  end
end
common_name() click to toggle source
# File lib/devise_pkcs12_authenticatable/strategy.rb, line 32
def common_name
  request.headers['X-SSL-CLIENT-S-DN'].split('/').last.split('=').last.strip
end