From c2495003fb6363eeedb3a1899d38388d138cb185 Mon Sep 17 00:00:00 2001 From: Christos Triantafyllidis Date: Tue, 29 Dec 2009 16:01:17 +0200 Subject: [PATCH] Minor changes to the algorithm --- lib/authlogic_x509/session.rb | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/lib/authlogic_x509/session.rb b/lib/authlogic_x509/session.rb index ea056c2..f4696e5 100644 --- a/lib/authlogic_x509/session.rb +++ b/lib/authlogic_x509/session.rb @@ -55,19 +55,9 @@ def authenticating_with_x509? end def validate_by_x509 - - if controller.local_request? - self.x509_subject_dn = "/CN=Local Request" - elsif controller.request.env['SSL_CLIENT_S_DN'] =~ /CN/ - self.x509_subject_dn = controller.request.env['SSL_CLIENT_S_DN'] - elsif controller.request.env['REDIRECT_SSL_CLIENT_S_DN'] =~ /CN/ - self.x509_subject_dn = controller.request.env['REDIRECT_SSL_CLIENT_S_DN'] - elsif controller.request.env['HTTP_REDIRECT_SSL_CLIENT_S_DN'] =~ /CN/ - self.x509_subject_dn = controller.request.env['HTTP_REDIRECT_SSL_CLIENT_S_DN'] - end - + self.x509_subject_dn = get_subject_dn if self.x509_subject_dn - self.attempted_record = klass.send(find_by_x509_login_method, x509_subject_dn) + self.attempted_record = search_for_record(find_by_x509_login_method, x509_subject_dn) errors.add(:x509_subject_dn, I18n.t('error_messages.x509_subject_dn_not_found', :default => "does not exist")) if attempted_record.blank? else errors.add_to_base("Subject DN not found") @@ -77,6 +67,18 @@ def validate_by_x509 def find_by_x509_login_method self.class.find_by_x509_login_method end + + def get_subject_dn + if controller.local_request? + self.x509_subject_dn = "/CN=Local Request" + elsif controller.request.env['SSL_CLIENT_S_DN'] =~ /CN/ + self.x509_subject_dn = controller.request.env['SSL_CLIENT_S_DN'] + elsif controller.request.env['REDIRECT_SSL_CLIENT_S_DN'] =~ /CN/ + self.x509_subject_dn = controller.request.env['REDIRECT_SSL_CLIENT_S_DN'] + elsif controller.request.env['HTTP_REDIRECT_SSL_CLIENT_S_DN'] =~ /CN/ + self.x509_subject_dn = controller.request.env['HTTP_REDIRECT_SSL_CLIENT_S_DN'] + end + end end end end \ No newline at end of file