Class: OmniAuth::Strategies::LDAP
- Inherits:
-
Object
- Object
- OmniAuth::Strategies::LDAP
- Includes:
- OmniAuth::Strategy
- Defined in:
- lib/omniauth/strategies/ldap.rb
Constant Summary collapse
- @@config =
{ 'name' => 'cn', 'first_name' => 'givenName', 'last_name' => 'sn', 'email' => ['mail', "email", 'userPrincipalName'], 'phone' => ['telephoneNumber', 'homePhone', 'facsimileTelephoneNumber'], 'mobile' => ['mobile', 'mobileTelephoneNumber'], 'nickname' => ['uid', 'userid', 'sAMAccountName'], 'title' => 'title', 'location' => {"%0, %1, %2, %3 %4" => [['address', 'postalAddress', 'homePostalAddress', 'street', 'streetAddress'], ['l'], ['st'],['co'],['postOfficeBox']]}, 'uid' => 'dn', 'url' => ['wwwhomepage'], 'image' => 'jpegPhoto', 'description' => 'description' }
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.map_user(mapper, object) ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/omniauth/strategies/ldap.rb', line 70 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 |
Instance Method Details
#callback_phase ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/omniauth/strategies/ldap.rb', line 37 def callback_phase @adaptor = OmniAuth::LDAP::Adaptor.new @options return fail!(:missing_credentials) if missing_credentials? begin @ldap_user_info = @adaptor.bind_as(:filter => filter(@adaptor), :size => 1, :password => request['password']) return fail!(:invalid_credentials) if !@ldap_user_info @user_info = self.class.map_user(@@config, @ldap_user_info) super rescue Exception => e return fail!(:ldap_error, e) end end |
#filter(adaptor) ⇒ Object
52 53 54 55 56 57 58 |
# File 'lib/omniauth/strategies/ldap.rb', line 52 def filter adaptor if adaptor.filter and !adaptor.filter.empty? Net::LDAP::Filter.construct(adaptor.filter % {username: @options[:name_proc].call(request['username'])}) else Net::LDAP::Filter.eq(adaptor.uid, @options[:name_proc].call(request['username'])) end end |
#request_phase ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'lib/omniauth/strategies/ldap.rb', line 28 def request_phase OmniAuth::LDAP::Adaptor.validate @options f = OmniAuth::Form.new(:title => ([:title] || "Acesso.IFPE"), :url => callback_path) f.text_field 'CPF', 'username' f.password_field 'Senha', 'password' f. "Entrar" f.to_response end |