]>
cat aescling's git repositories - mastodon.git/blob - app/models/concerns/ldap_authenticable.rb
1 # frozen_string_literal: true
3 module LdapAuthenticable
4 extend ActiveSupport
::Concern
7 def authenticate_with_ldap(params
= {})
8 ldap
= Net
::LDAP.new(ldap_options
)
9 filter
= format(Devise
.ldap_search_filter
, uid
: Devise
.ldap_uid
, email
: params
[:email])
11 if (user_info
= ldap
.bind_as(base
: Devise
.ldap_base
, filter
: filter
, password
: params
[:password]))
12 ldap_get_user(user_info
.first
)
16 def ldap_get_user(attributes
= {})
17 resource
= joins(:account).find_by(accounts
: { username
: attributes
[Devise
.ldap_uid
.to_sym
].first
})
20 resource
= new(email
: attributes
[:mail].first
, agreement
: true, account_attributes
: { username
: attributes
[Devise
.ldap_uid
.to_sym
].first
}, admin
: false, external
: true, confirmed_at
: Time
.now
.utc
)
29 host
: Devise
.ldap_host
,
30 port
: Devise
.ldap_port
,
31 base
: Devise
.ldap_base
,
35 username
: Devise
.ldap_bind_dn
,
36 password
: Devise
.ldap_password
,
42 if [:simple_tls, :start_tls].include?(Devise
.ldap_method
)
44 method
: Devise
.ldap_method
,
45 tls_options
: OpenSSL
::SSL::SSLContext::DEFAULT_PARAMS.tap
{ |options
| options
[:verify_mode] = OpenSSL
::SSL::VERIFY_NONE if Devise
.ldap_tls_no_verify
},
This page took 0.134036 seconds and 4 git commands to generate.