Skip to content

Commit a460d38

Browse files
committed
add DI and clean uo setDisplayNameRoutine
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
1 parent 6a2f094 commit a460d38

File tree

1 file changed

+42
-9
lines changed

1 file changed

+42
-9
lines changed

lib/LDAPUserManager.php

Lines changed: 42 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
use OCP\IGroup;
3737
use OCP\IGroupManager;
3838
use OCP\IImage;
39+
use OCP\IL10N;
40+
use OCP\ILogger;
3941
use OCP\IUser;
4042
use OCP\IUserManager;
4143
use OCP\IUserSession;
@@ -62,8 +64,25 @@ class LDAPUserManager implements ILDAPUserPlugin {
6264
private $ocConfig;
6365
/** @var Configuration */
6466
private $configuration;
67+
/** @var IL10N */
68+
private $l10n;
69+
/** @var ILogger */
70+
private $logger;
6571

66-
public function __construct(IUserManager $userManager, IGroupManager $groupManager, IUserSession $userSession, LDAPConnect $ldapConnect, IConfig $ocConfig, ILDAPProvider $ldapProvider, Configuration $configuration) {
72+
/**
73+
* LDAPUserManager constructor.
74+
*
75+
* @param IUserManager $userManager
76+
* @param IGroupManager $groupManager
77+
* @param IUserSession $userSession
78+
* @param LDAPConnect $ldapConnect
79+
* @param IConfig $ocConfig
80+
* @param ILDAPProvider $ldapProvider
81+
* @param Configuration $configuration
82+
* @param IL10N $l10n
83+
* @param ILogger $logger
84+
*/
85+
public function __construct(IUserManager $userManager, IGroupManager $groupManager, IUserSession $userSession, LDAPConnect $ldapConnect, IConfig $ocConfig, ILDAPProvider $ldapProvider, Configuration $configuration, IL10N $l10n, ILogger $logger) {
6786
$this->userManager = $userManager;
6887
$this->groupManager = $groupManager;
6988
$this->userSession = $userSession;
@@ -75,6 +94,8 @@ public function __construct(IUserManager $userManager, IGroupManager $groupManag
7594
$this->makeLdapBackendFirst();
7695
$this->ldapProvider = $ldapProvider;
7796
$this->configuration = $configuration;
97+
$this->l10n = $l10n;
98+
$this->logger = $logger;
7899
}
79100

80101
/**
@@ -93,28 +114,40 @@ public function respondToActions() {
93114
}
94115

95116
/**
96-
* set display name of the user
97117
*
98118
* @param string $uid user ID of the user
99119
* @param string $displayName new user's display name
100120
* @return bool
121+
* @throws HintException
101122
*/
102123
public function setDisplayName($uid, $displayName) {
103124
$userDN = $this->getUserDN($uid);
104125

105126
$connection = $this->ldapProvider->getLDAPConnection($uid);
106127

107-
$displayNameField = $this->ldapProvider->getLDAPDisplayNameField($uid);
128+
try {
129+
$displayNameField = $this->ldapProvider->getLDAPDisplayNameField($uid);
130+
// The LDAP backend supports a second display name field, but it is
131+
// not exposed at this time. So it is just ignored for now.
132+
} catch (\Exception $e) {
133+
throw new HintException(
134+
'Corresponding LDAP User not found',
135+
$this->l10n->t('Could not find related LDAP entry')
136+
);
137+
}
108138

109139
if (!is_resource($connection)) {
110-
//LDAP not available
111-
\OCP\Util::writeLog('user_ldap', 'LDAP resource not available.', \OCP\Util::DEBUG);
140+
$this->logger->debug('LDAP resource not available', ['app' => 'ldap_write_support']);
112141
return false;
113142
}
114143
try {
115-
return ldap_mod_replace($connection,$userDN, [$displayNameField => $displayName]);
116-
} catch(ConstraintViolationException $e) {
117-
throw new HintException('DisplayName change rejected.', \OC::$server->getL10N('user_ldap')->t('DisplayName change rejected. Hint: ').$e->getMessage(), $e->getCode());
144+
return ldap_mod_replace($connection, $userDN, [$displayNameField => $displayName]);
145+
} catch (ConstraintViolationException $e) {
146+
throw new HintException(
147+
$e->getMessage(),
148+
$this->l10n->t('DisplayName change rejected'),
149+
$e->getCode()
150+
);
118151
}
119152
}
120153

@@ -180,7 +213,7 @@ public function createUser($username, $password) {
180213
$requireActorFromLDAP = (bool)$this->ocConfig->getAppValue('ldap_write_support', 'create.requireActorFromLDAP', '1');
181214
$adminUser = $this->userSession->getUser();
182215
if($requireActorFromLDAP && !$adminUser instanceof IUser) {
183-
throw new \Exception('Acting user is not a user');
216+
throw new \Exception('Acting user is not from LDAP');
184217
}
185218
try {
186219
$connection = $this->ldapProvider->getLDAPConnection($adminUser->getUID());

0 commit comments

Comments
 (0)