Software /
code /
prosody-modules
Comparison
mod_lib_ldap/ldap.lib.lua @ 927:a9dfa7232d88
Merge
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Tue, 12 Mar 2013 12:10:25 +0000 |
parent | 877:cd2262969d2e |
child | 3195:66b3085ecc49 |
comparison
equal
deleted
inserted
replaced
926:f88381a39c56 | 927:a9dfa7232d88 |
---|---|
175 return params; | 175 return params; |
176 end | 176 end |
177 | 177 |
178 -- XXX consider renaming this...it doesn't bind the current connection | 178 -- XXX consider renaming this...it doesn't bind the current connection |
179 function _M.bind(username, password) | 179 function _M.bind(username, password) |
180 local who = format('%s=%s,%s', params.user.usernamefield, username, params.user.basedn); | 180 local conn = _M.getconnection(); |
181 local filter = format('%s=%s', params.user.usernamefield, username); | |
182 | |
183 if filter then | |
184 filter = _M.filter.combine_and(filter, params.user.filter); | |
185 end | |
186 | |
187 local who = _M.singlematch { | |
188 attrs = params.user.usernamefield, | |
189 base = params.user.basedn, | |
190 filter = filter, | |
191 }; | |
192 | |
193 if who then | |
194 who = who.dn; | |
195 module:log('debug', '_M.bind - who: %s', who); | |
196 else | |
197 module:log('debug', '_M.bind - no DN found for username = %s', username); | |
198 return nil, format('no DN found for username = %s', username); | |
199 end | |
200 | |
181 local conn, err = ldap.open_simple(params.hostname, who, password, params.use_tls); | 201 local conn, err = ldap.open_simple(params.hostname, who, password, params.use_tls); |
182 | 202 |
183 if conn then | 203 if conn then |
184 conn:close(); | 204 conn:close(); |
185 return true; | 205 return true; |
190 | 210 |
191 function _M.singlematch(query) | 211 function _M.singlematch(query) |
192 local ld = _M.getconnection(); | 212 local ld = _M.getconnection(); |
193 | 213 |
194 query.sizelimit = 1; | 214 query.sizelimit = 1; |
195 query.scope = 'onelevel'; | 215 query.scope = 'subtree'; |
196 | 216 |
197 for dn, attribs in ld:search(query) do | 217 for dn, attribs in ld:search(query) do |
218 attribs.dn = dn; | |
198 return attribs; | 219 return attribs; |
199 end | 220 end |
200 end | 221 end |
201 | 222 |
202 _M.filter = {}; | 223 _M.filter = {}; |