Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorblizzz <blizzz@owncloud.com>2014-02-10 17:44:43 +0400
committerblizzz <blizzz@owncloud.com>2014-02-10 17:44:43 +0400
commite5dac9fa240498ea8739cd1b4baabb2eeb6bf031 (patch)
tree8ad5f2c2699b395d2c991b3e0bf8576f328cbc6d /apps
parent48bb8aeb017b0d9b04e40d589a8bd93267b186e7 (diff)
parent0a475bdab3b6ac1db06beeb391fee1f0216d2d4b (diff)
Merge pull request #7124 from owncloud/fix_6541
LDAP: also try MS AD's thumbnailPhoto when looking for an avatar image
Diffstat (limited to 'apps')
-rw-r--r--apps/user_ldap/user_ldap.php33
1 files changed, 26 insertions, 7 deletions
diff --git a/apps/user_ldap/user_ldap.php b/apps/user_ldap/user_ldap.php
index a19af86086c..619a992bd12 100644
--- a/apps/user_ldap/user_ldap.php
+++ b/apps/user_ldap/user_ldap.php
@@ -85,15 +85,14 @@ class USER_LDAP extends BackendUtility implements \OCP\UserInterface {
return;
}
- $jpegPhoto = $this->access->readAttribute($dn, 'jpegPhoto');
- \OCP\Config::setUserValue($uid, 'user_ldap', 'lastJpegPhotoLookup', time());
- if(!$jpegPhoto || !is_array($jpegPhoto) || !isset($jpegPhoto[0])) {
+ $avatarImage = $this->getAvatarImage($uid, $dn);
+ if($avatarImage === false) {
//not set, nothing left to do;
return;
}
$image = new \OCP\Image();
- $image->loadFromBase64(base64_encode($jpegPhoto[0]));
+ $image->loadFromBase64(base64_encode($avatarImage));
if(!$image->valid()) {
\OCP\Util::writeLog('user_ldap', 'jpegPhoto data invalid for '.$dn,
@@ -128,8 +127,7 @@ class USER_LDAP extends BackendUtility implements \OCP\UserInterface {
if(!$dn) {
return false;
}
- $jpegPhoto = $this->access->readAttribute($dn, 'jpegPhoto');
- if(!$jpegPhoto || !is_array($jpegPhoto) || !isset($jpegPhoto[0])) {
+ if($this->getAvatarImage($uid, $dn) === false) {
//The user is allowed to change his avatar in ownCloud only if no
//avatar is provided by LDAP
return true;
@@ -138,6 +136,26 @@ class USER_LDAP extends BackendUtility implements \OCP\UserInterface {
}
/**
+ * @brief reads the image from LDAP that shall be used as Avatar
+ * @param $uid string, the ownCloud user name
+ * @param $dn string, the user DN
+ * @return image data (provided by LDAP) | false
+ */
+ private function getAvatarImage($uid, $dn) {
+ $attributes = array('jpegPhoto', 'thumbnailPhoto');
+ foreach($attributes as $attribute) {
+ $result = $this->access->readAttribute($dn, $attribute);
+ \OCP\Config::setUserValue($uid, 'user_ldap', 'lastJpegPhotoLookup',
+ time());
+ if($result !== false && is_array($result) && isset($result[0])) {
+ return $result[0];
+ }
+ }
+
+ return false;
+ }
+
+ /**
* @brief Check if the password is correct
* @param $uid The username
* @param $password The password
@@ -238,7 +256,8 @@ class USER_LDAP extends BackendUtility implements \OCP\UserInterface {
}
//check if user really still exists by reading its entry
if(!is_array($this->access->readAttribute($dn, ''))) {
- \OCP\Util::writeLog('user_ldap', 'LDAP says no user '.$dn, \OCP\Util::DEBUG);
+ \OCP\Util::writeLog('user_ldap', 'LDAP says no user '.$dn.' on '.
+ $this->access->connection->ldapHost, \OCP\Util::DEBUG);
$this->access->connection->writeToCache('userExists'.$uid, false);
return false;
}