|
27 | 27 |
|
28 | 28 | from ldap.schema import SCHEMA_ATTRS |
29 | 29 | from ldap.controls import LDAPControl,DecodeControlTuples,RequestControlTuples |
30 | | -from ldap.extop import ExtendedRequest,ExtendedResponse |
| 30 | +from ldap.extop import ExtendedRequest,ExtendedResponse,PasswordModifyResponse |
31 | 31 | from ldap.compat import reraise |
32 | 32 |
|
33 | 33 | from ldap import LDAPError |
@@ -656,9 +656,16 @@ def passwd(self,user,oldpw,newpw,serverctrls=None,clientctrls=None): |
656 | 656 | newpw = self._bytesify_input('newpw', newpw) |
657 | 657 | return self._ldap_call(self._l.passwd,user,oldpw,newpw,RequestControlTuples(serverctrls),RequestControlTuples(clientctrls)) |
658 | 658 |
|
659 | | - def passwd_s(self,user,oldpw,newpw,serverctrls=None,clientctrls=None): |
660 | | - msgid = self.passwd(user,oldpw,newpw,serverctrls,clientctrls) |
661 | | - return self.extop_result(msgid,all=1,timeout=self.timeout) |
| 659 | + def passwd_s(self, user, oldpw, newpw, serverctrls=None, clientctrls=None, extract_newpw=False): |
| 660 | + msgid = self.passwd(user, oldpw, newpw, serverctrls, clientctrls) |
| 661 | + respoid, respvalue = self.extop_result(msgid, all=1, timeout=self.timeout) |
| 662 | + |
| 663 | + if respoid != PasswordModifyResponse.responseName: |
| 664 | + raise ldap.PROTOCOL_ERROR("Unexpected OID %s in extended response!" % respoid) |
| 665 | + if extract_newpw and respvalue: |
| 666 | + respvalue = PasswordModifyResponse(PasswordModifyResponse.responseName, respvalue) |
| 667 | + |
| 668 | + return respoid, respvalue |
662 | 669 |
|
663 | 670 | def rename(self,dn,newrdn,newsuperior=None,delold=1,serverctrls=None,clientctrls=None): |
664 | 671 | """ |
|
0 commit comments