LDAP: only connect to LDAP once on login
This commit is contained in:
parent
69350c4e0d
commit
c538ac3081
|
@ -29,6 +29,9 @@ class Connection {
|
||||||
private $configID;
|
private $configID;
|
||||||
private $configured = false;
|
private $configured = false;
|
||||||
|
|
||||||
|
//whether connection should be kept on __destruct
|
||||||
|
private $dontDestruct = false;
|
||||||
|
|
||||||
//cache handler
|
//cache handler
|
||||||
protected $cache;
|
protected $cache;
|
||||||
|
|
||||||
|
@ -83,11 +86,20 @@ class Connection {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function __destruct() {
|
public function __destruct() {
|
||||||
if(is_resource($this->ldapConnectionRes)) {
|
if(!$this->dontDestruct && is_resource($this->ldapConnectionRes)) {
|
||||||
@ldap_unbind($this->ldapConnectionRes);
|
@ldap_unbind($this->ldapConnectionRes);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief defines behaviour when the instance is cloned
|
||||||
|
*/
|
||||||
|
public function __clone() {
|
||||||
|
//a cloned instance inherits the connection resource. It may use it,
|
||||||
|
//but it may not disconnect it
|
||||||
|
$this->dontDestruct = true;
|
||||||
|
}
|
||||||
|
|
||||||
public function __get($name) {
|
public function __get($name) {
|
||||||
if(!$this->configured) {
|
if(!$this->configured) {
|
||||||
$this->readConfiguration();
|
$this->readConfiguration();
|
||||||
|
|
|
@ -77,11 +77,6 @@ class USER_LDAP extends lib\Access implements \OCP\UserInterface {
|
||||||
}
|
}
|
||||||
$dn = $ldap_users[0];
|
$dn = $ldap_users[0];
|
||||||
|
|
||||||
//are the credentials OK?
|
|
||||||
if(!$this->areCredentialsValid($dn, $password)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//do we have a username for him/her?
|
//do we have a username for him/her?
|
||||||
$ocname = $this->dn2username($dn);
|
$ocname = $this->dn2username($dn);
|
||||||
|
|
||||||
|
@ -90,6 +85,11 @@ class USER_LDAP extends lib\Access implements \OCP\UserInterface {
|
||||||
$this->updateQuota($dn);
|
$this->updateQuota($dn);
|
||||||
$this->updateEmail($dn);
|
$this->updateEmail($dn);
|
||||||
|
|
||||||
|
//are the credentials OK?
|
||||||
|
if(!$this->areCredentialsValid($dn, $password)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
//give back the display name
|
//give back the display name
|
||||||
return $ocname;
|
return $ocname;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue