ensures mapping of chosen userid
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
This commit is contained in:
parent
5b754a6353
commit
660fbd64e3
4 changed files with 39 additions and 6 deletions
|
@ -635,7 +635,7 @@ class Access extends LDAPUtility {
|
|||
return false;
|
||||
}
|
||||
|
||||
protected function mapAndAnnounceIfApplicable(
|
||||
public function mapAndAnnounceIfApplicable(
|
||||
AbstractMapping $mapper,
|
||||
string $fdn,
|
||||
string $name,
|
||||
|
|
|
@ -110,7 +110,7 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLD
|
|||
$members = $this->access->connection->getFromCache($cacheKeyMembers);
|
||||
if(!is_null($members)) {
|
||||
$this->cachedGroupMembers[$gid] = $members;
|
||||
$isInGroup = in_array($userDN, $members);
|
||||
$isInGroup = in_array($userDN, $members, true);
|
||||
$this->access->connection->writeToCache($cacheKey, $isInGroup);
|
||||
return $isInGroup;
|
||||
}
|
||||
|
|
|
@ -622,8 +622,26 @@ class User_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn
|
|||
if ($this->userPluginManager->implementsActions(Backend::CREATE_USER)) {
|
||||
if ($dn = $this->userPluginManager->createUser($username, $password)) {
|
||||
if (is_string($dn)) {
|
||||
//updates user mapping
|
||||
$this->access->dn2ocname($dn, $username, true);
|
||||
// the NC user creation work flow requires a know user id up front
|
||||
$uuid = $this->access->getUUID($dn, true);
|
||||
if(is_string($uuid)) {
|
||||
$this->access->mapAndAnnounceIfApplicable(
|
||||
$this->access->getUserMapper(),
|
||||
$dn,
|
||||
$username,
|
||||
$uuid,
|
||||
true
|
||||
);
|
||||
$this->access->cacheUserExists($username);
|
||||
} else {
|
||||
\OC::$server->getLogger()->warning(
|
||||
'Failed to map created LDAP user with userid {userid}, because UUID could not be determined',
|
||||
[
|
||||
'app' => 'user_ldap',
|
||||
'userid' => $username,
|
||||
]
|
||||
);
|
||||
}
|
||||
} else {
|
||||
throw new \UnexpectedValueException("LDAP Plugin: Method createUser changed to return the user DN instead of boolean.");
|
||||
}
|
||||
|
|
|
@ -35,6 +35,7 @@ use OC\User\Backend;
|
|||
use OC\User\Session;
|
||||
use OCA\User_LDAP\Access;
|
||||
use OCA\User_LDAP\Connection;
|
||||
use OCA\User_LDAP\Mapping\AbstractMapping;
|
||||
use OCA\User_LDAP\Mapping\UserMapping;
|
||||
use OCA\User_LDAP\User\Manager;
|
||||
use OCA\User_LDAP\User\OfflineUser;
|
||||
|
@ -1437,16 +1438,30 @@ class User_LDAPTest extends TestCase {
|
|||
}
|
||||
|
||||
public function testCreateUserWithPlugin() {
|
||||
$uid = 'alien6372';
|
||||
$uuid = '123-2345-36756-123-2345234-4431';
|
||||
$pwd = 'passwørd';
|
||||
|
||||
$this->pluginManager->expects($this->once())
|
||||
->method('implementsActions')
|
||||
->with(Backend::CREATE_USER)
|
||||
->willReturn(true);
|
||||
$this->pluginManager->expects($this->once())
|
||||
->method('createUser')
|
||||
->with('uid','password')
|
||||
->with($uid, $pwd)
|
||||
->willReturn('result');
|
||||
|
||||
$this->assertEquals($this->backend->createUser('uid', 'password'),true);
|
||||
$this->access->expects($this->atLeastOnce())
|
||||
->method('getUUID')
|
||||
->willReturn($uuid);
|
||||
$this->access->expects($this->once())
|
||||
->method('mapAndAnnounceIfApplicable')
|
||||
->with($this->isInstanceOf(AbstractMapping::class), $this->anything(), $uid, $uuid, true);
|
||||
$this->access->expects($this->any())
|
||||
->method('getUserMapper')
|
||||
->willReturn($this->createMock(AbstractMapping::class));
|
||||
|
||||
$this->assertEquals($this->backend->createUser($uid, $pwd),true);
|
||||
}
|
||||
|
||||
public function testCreateUserFailing() {
|
||||
|
|
Loading…
Reference in a new issue