-
Notifications
You must be signed in to change notification settings - Fork 88
/
Copy pathUserMappingManager.php
41 lines (34 loc) Β· 1.21 KB
/
UserMappingManager.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
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\GroupFolders\ACL\UserMapping;
use OCP\IGroup;
use OCP\IGroupManager;
use OCP\IUser;
use OCP\IUserManager;
class UserMappingManager implements IUserMappingManager {
public function __construct(
private readonly IGroupManager $groupManager,
private readonly IUserManager $userManager,
) {
}
public function getMappingsForUser(IUser $user, bool $userAssignable = true): array {
$groupMappings = array_values(array_map(fn (IGroup $group): UserMapping => new UserMapping('group', $group->getGID(), $group->getDisplayName()), $this->groupManager->getUserGroups($user)));
return array_merge([
new UserMapping('user', $user->getUID(), $user->getDisplayName()),
], $groupMappings);
}
public function mappingFromId(string $type, string $id): ?IUserMapping {
$mappingObject = ($type === 'group' ? $this->groupManager : $this->userManager)->get($id);
if ($mappingObject) {
$displayName = $mappingObject->getDisplayName();
/** @var 'user'|'group' $type */
return new UserMapping($type, $id, $displayName);
} else {
return null;
}
}
}