class OmniAuth::Strategies::LDAP
Constants
- InvalidCredentialsError
Public Class Methods
map_user(mapper, object)
click to toggle source
# File lib/omniauth/strategies/ldap.rb, line 81 def self.map_user(mapper, object) user = {} mapper.each do |key, value| case value when String user[key] = object[value.downcase.to_sym].first if object.respond_to? value.downcase.to_sym when Array value.each {|v| (user[key] = object[v.downcase.to_sym].first; break;) if object.respond_to? v.downcase.to_sym} when Hash value.map do |key1, value1| pattern = key1.dup value1.each_with_index do |v,i| part = ''; v.collect(&:downcase).collect(&:to_sym).each {|v1| (part = object[v1].first; break;) if object.respond_to? v1} pattern.gsub!("%#{i}",part||'') end user[key] = pattern end end end user end
Public Instance Methods
callback_phase()
click to toggle source
Calls superclass method
# File lib/omniauth/strategies/ldap.rb, line 43 def callback_phase @adaptor = OmniAuth::LDAP::Adaptor.new @options return fail!(:invalid_request_method) unless valid_request_method? return fail!(:missing_credentials) if missing_credentials? begin @ldap_user_info = @adaptor.bind_as(:filter => filter(@adaptor), :size => 1, :password => request['password']) unless @ldap_user_info return fail!(:invalid_credentials, InvalidCredentialsError.new("Invalid credentials for #{request['username']}")) end @user_info = self.class.map_user(@@config, @ldap_user_info) super rescue Exception => e return fail!(:ldap_error, e) end end
filter(adaptor)
click to toggle source
# File lib/omniauth/strategies/ldap.rb, line 62 def filter(adaptor) if adaptor.filter and !adaptor.filter.empty? username = Net::LDAP::Filter.escape(@options[:name_proc].call(request['username'])) Net::LDAP::Filter.construct(adaptor.filter % { username: username }) else Net::LDAP::Filter.equals(adaptor.uid, @options[:name_proc].call(request['username'])) end end
request_phase()
click to toggle source
# File lib/omniauth/strategies/ldap.rb, line 34 def request_phase OmniAuth::LDAP::Adaptor.validate @options f = OmniAuth::Form.new(:title => (options[:title] || "LDAP Authentication"), :url => callback_path) f.text_field 'Login', 'username' f.password_field 'Password', 'password' f.button "Sign In" f.to_response end
Protected Instance Methods
missing_credentials?()
click to toggle source
# File lib/omniauth/strategies/ldap.rb, line 109 def missing_credentials? request['username'].nil? or request['username'].empty? or request['password'].nil? or request['password'].empty? end
valid_request_method?()
click to toggle source
# File lib/omniauth/strategies/ldap.rb, line 105 def valid_request_method? request.env['REQUEST_METHOD'] == 'POST' end