-
-
Notifications
You must be signed in to change notification settings - Fork 4.1k
/
Copy pathExtStorageConfigHandler.php
50 lines (41 loc) · 1.22 KB
/
ExtStorageConfigHandler.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
/**
* SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\User_LDAP\Handler;
use OCA\Files_External\Config\IConfigHandler;
use OCA\Files_External\Config\SimpleSubstitutionTrait;
use OCA\Files_External\Config\UserContext;
use OCA\User_LDAP\User_Proxy;
class ExtStorageConfigHandler extends UserContext implements IConfigHandler {
use SimpleSubstitutionTrait;
/**
* @param mixed $optionValue
* @return mixed the same type as $optionValue
* @since 16.0.0
* @throws \Exception
*/
public function handle($optionValue) {
$this->placeholder = 'home';
$user = $this->getUser();
if ($user === null) {
return $optionValue;
}
$backend = $user->getBackend();
if (!$backend instanceof User_Proxy) {
return $optionValue;
}
$access = $backend->getLDAPAccess($user->getUID());
if (!$access) {
return $optionValue;
}
$attribute = $access->connection->ldapExtStorageHomeAttribute;
if (empty($attribute)) {
return $optionValue;
}
$ldapUser = $access->userManager->get($user->getUID());
$extHome = $ldapUser !== null ? $ldapUser->getExtStorageHome() : '';
return $this->processInput($optionValue, $extHome);
}
}