Blame view
sources/apps/user_ldap/lib/proxy.php
2.99 KB
|
03e52840d
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?php /** * ownCloud – LDAP Backend Proxy * * @author Arthur Schiwon * @copyright 2013 Arthur Schiwon blizzz@owncloud.com * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE * License as published by the Free Software Foundation; either * version 3 of the License, or any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU AFFERO GENERAL PUBLIC LICENSE for more details. * * You should have received a copy of the GNU Affero General Public * License along with this library. If not, see <http://www.gnu.org/licenses/>. * */ namespace OCA\user_ldap\lib; |
|
31b7f2792
|
25 |
use OCA\user_ldap\lib\Access; |
|
03e52840d
|
26 |
abstract class Proxy {
|
|
31b7f2792
|
27 28 |
static private $accesses = array(); private $ldap = null; |
|
03e52840d
|
29 |
|
|
31b7f2792
|
30 31 |
public function __construct(ILDAPWrapper $ldap) {
$this->ldap = $ldap;
|
|
03e52840d
|
32 33 |
$this->cache = \OC_Cache::getGlobalCache(); } |
|
31b7f2792
|
34 35 36 |
private function addAccess($configPrefix) {
$connector = new Connection($this->ldap, $configPrefix);
self::$accesses[$configPrefix] = new Access($connector, $this->ldap);
|
|
03e52840d
|
37 |
} |
|
31b7f2792
|
38 39 40 |
protected function getAccess($configPrefix) {
if(!isset(self::$accesses[$configPrefix])) {
$this->addAccess($configPrefix);
|
|
03e52840d
|
41 |
} |
|
31b7f2792
|
42 |
return self::$accesses[$configPrefix]; |
|
03e52840d
|
43 44 45 46 47 48 49 50 51 |
}
protected function getUserCacheKey($uid) {
return 'user-'.$uid.'-lastSeenOn';
}
protected function getGroupCacheKey($gid) {
return 'group-'.$gid.'-lastSeenOn';
}
|
|
31b7f2792
|
52 |
abstract protected function callOnLastSeenOn($id, $method, $parameters, $passOnWhen); |
|
03e52840d
|
53 54 55 56 57 58 59 60 61 |
abstract protected function walkBackends($id, $method, $parameters); /** * @brief Takes care of the request to the User backend * @param $uid string, the uid connected to the request * @param $method string, the method of the user backend that shall be called * @param $parameters an array of parameters to be passed * @return mixed, the result of the specified method */ |
|
31b7f2792
|
62 63 64 |
protected function handleRequest($id, $method, $parameters, $passOnWhen = false) {
$result = $this->callOnLastSeenOn($id, $method, $parameters, $passOnWhen);
if($result === $passOnWhen) {
|
|
03e52840d
|
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
$result = $this->walkBackends($id, $method, $parameters);
}
return $result;
}
private function getCacheKey($key) {
$prefix = 'LDAP-Proxy-';
if(is_null($key)) {
return $prefix;
}
return $prefix.md5($key);
}
public function getFromCache($key) {
if(!$this->isCached($key)) {
return null;
}
$key = $this->getCacheKey($key);
return unserialize(base64_decode($this->cache->get($key)));
}
public function isCached($key) {
$key = $this->getCacheKey($key);
return $this->cache->hasKey($key);
}
public function writeToCache($key, $value) {
$key = $this->getCacheKey($key);
$value = base64_encode(serialize($value));
$this->cache->set($key, $value, '2592000');
}
public function clearCache() {
$this->cache->clear($this->getCacheKey(null));
}
|
|
31b7f2792
|
101 |
} |