mirror of
https://github.com/nextcloud/server.git
synced 2026-03-02 21:41:12 -05:00
feat(user_ldap): upstream common code into Proxy class and add public getters for backends
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
This commit is contained in:
parent
81b46f3fc8
commit
96cb85efdb
3 changed files with 59 additions and 49 deletions
|
|
@ -39,12 +39,11 @@ use OCP\GroupInterface;
|
|||
use OCP\IConfig;
|
||||
use OCP\IUserManager;
|
||||
|
||||
/**
|
||||
* @template-extends Proxy<Group_LDAP>
|
||||
*/
|
||||
class Group_Proxy extends Proxy implements \OCP\GroupInterface, IGroupLDAP, IGetDisplayNameBackend, INamedBackend, IDeleteGroupBackend, IBatchMethodsBackend, IIsAdminBackend {
|
||||
private $backends = [];
|
||||
private ?Group_LDAP $refBackend = null;
|
||||
private Helper $helper;
|
||||
private GroupPluginManager $groupPluginManager;
|
||||
private bool $isSetUp = false;
|
||||
private IConfig $config;
|
||||
private IUserManager $ncUserManager;
|
||||
|
||||
|
|
@ -56,28 +55,15 @@ class Group_Proxy extends Proxy implements \OCP\GroupInterface, IGroupLDAP, IGet
|
|||
IConfig $config,
|
||||
IUserManager $ncUserManager,
|
||||
) {
|
||||
parent::__construct($ldap, $accessFactory);
|
||||
$this->helper = $helper;
|
||||
parent::__construct($helper, $ldap, $accessFactory);
|
||||
$this->groupPluginManager = $groupPluginManager;
|
||||
$this->config = $config;
|
||||
$this->ncUserManager = $ncUserManager;
|
||||
}
|
||||
|
||||
protected function setup(): void {
|
||||
if ($this->isSetUp) {
|
||||
return;
|
||||
}
|
||||
|
||||
$serverConfigPrefixes = $this->helper->getServerConfigurationPrefixes(true);
|
||||
foreach ($serverConfigPrefixes as $configPrefix) {
|
||||
$this->backends[$configPrefix] =
|
||||
new Group_LDAP($this->getAccess($configPrefix), $this->groupPluginManager, $this->config, $this->ncUserManager);
|
||||
if (is_null($this->refBackend)) {
|
||||
$this->refBackend = &$this->backends[$configPrefix];
|
||||
}
|
||||
}
|
||||
|
||||
$this->isSetUp = true;
|
||||
protected function newInstance(string $configPrefix): Group_LDAP {
|
||||
return new Group_LDAP($this->getAccess($configPrefix), $this->groupPluginManager, $this->config, $this->ncUserManager);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -37,6 +37,9 @@ use OCA\User_LDAP\Mapping\UserMapping;
|
|||
use OCP\ICache;
|
||||
use OCP\Server;
|
||||
|
||||
/**
|
||||
* @template T
|
||||
*/
|
||||
abstract class Proxy {
|
||||
/** @var array<string,Access> */
|
||||
private static array $accesses = [];
|
||||
|
|
@ -45,7 +48,15 @@ abstract class Proxy {
|
|||
private ?ICache $cache = null;
|
||||
private AccessFactory $accessFactory;
|
||||
|
||||
/** @var T[] */
|
||||
protected array $backends = [];
|
||||
/** @var ?T */
|
||||
protected $refBackend = null;
|
||||
|
||||
protected bool $isSetUp = false;
|
||||
|
||||
public function __construct(
|
||||
private Helper $helper,
|
||||
ILDAPWrapper $ldap,
|
||||
AccessFactory $accessFactory
|
||||
) {
|
||||
|
|
@ -57,6 +68,36 @@ abstract class Proxy {
|
|||
}
|
||||
}
|
||||
|
||||
protected function setup(): void {
|
||||
if ($this->isSetUp) {
|
||||
return;
|
||||
}
|
||||
|
||||
$serverConfigPrefixes = $this->helper->getServerConfigurationPrefixes(true);
|
||||
foreach ($serverConfigPrefixes as $configPrefix) {
|
||||
$this->backends[$configPrefix] = $this->newInstance($configPrefix);
|
||||
|
||||
if (is_null($this->refBackend)) {
|
||||
$this->refBackend = $this->backends[$configPrefix];
|
||||
}
|
||||
}
|
||||
|
||||
$this->isSetUp = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return T
|
||||
*/
|
||||
abstract protected function newInstance(string $configPrefix): object;
|
||||
|
||||
/**
|
||||
* @return T
|
||||
*/
|
||||
public function getBackend(string $configPrefix): object {
|
||||
$this->setup();
|
||||
return $this->backends[$configPrefix];
|
||||
}
|
||||
|
||||
private function addAccess(string $configPrefix): void {
|
||||
$userMap = Server::get(UserMapping::class);
|
||||
$groupMap = Server::get(GroupMapping::class);
|
||||
|
|
|
|||
|
|
@ -42,13 +42,10 @@ use OCP\User\Backend\IProvideEnabledStateBackend;
|
|||
use OCP\UserInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
/**
|
||||
* @template-extends Proxy<User_LDAP>
|
||||
*/
|
||||
class User_Proxy extends Proxy implements IUserBackend, UserInterface, IUserLDAP, ICountUsersBackend, ICountMappedUsersBackend, IProvideEnabledStateBackend {
|
||||
/** @var User_LDAP[] */
|
||||
private array $backends = [];
|
||||
private ?User_LDAP $refBackend = null;
|
||||
|
||||
private bool $isSetUp = false;
|
||||
private Helper $helper;
|
||||
private INotificationManager $notificationManager;
|
||||
private UserPluginManager $userPluginManager;
|
||||
private LoggerInterface $logger;
|
||||
|
|
@ -63,35 +60,21 @@ class User_Proxy extends Proxy implements IUserBackend, UserInterface, IUserLDAP
|
|||
LoggerInterface $logger,
|
||||
DeletedUsersIndex $deletedUsersIndex,
|
||||
) {
|
||||
parent::__construct($ldap, $accessFactory);
|
||||
$this->helper = $helper;
|
||||
parent::__construct($helper, $ldap, $accessFactory);
|
||||
$this->notificationManager = $notificationManager;
|
||||
$this->userPluginManager = $userPluginManager;
|
||||
$this->logger = $logger;
|
||||
$this->deletedUsersIndex = $deletedUsersIndex;
|
||||
}
|
||||
|
||||
protected function setup(): void {
|
||||
if ($this->isSetUp) {
|
||||
return;
|
||||
}
|
||||
|
||||
$serverConfigPrefixes = $this->helper->getServerConfigurationPrefixes(true);
|
||||
foreach ($serverConfigPrefixes as $configPrefix) {
|
||||
$this->backends[$configPrefix] = new User_LDAP(
|
||||
$this->getAccess($configPrefix),
|
||||
$this->notificationManager,
|
||||
$this->userPluginManager,
|
||||
$this->logger,
|
||||
$this->deletedUsersIndex,
|
||||
);
|
||||
|
||||
if (is_null($this->refBackend)) {
|
||||
$this->refBackend = &$this->backends[$configPrefix];
|
||||
}
|
||||
}
|
||||
|
||||
$this->isSetUp = true;
|
||||
protected function newInstance(string $configPrefix): User_LDAP {
|
||||
return new User_LDAP(
|
||||
$this->getAccess($configPrefix),
|
||||
$this->notificationManager,
|
||||
$this->userPluginManager,
|
||||
$this->logger,
|
||||
$this->deletedUsersIndex,
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue