f7cloud_client/apps/support/lib/Sections/LdapSection.php
2026-03-05 13:40:40 +00:00

79 lines
1.8 KiB
PHP

<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\Support\Sections;
use OCA\Support\IDetail;
use OCA\Support\Section;
use OCA\User_LDAP\Configuration;
use OCA\User_LDAP\Helper;
use OCA\User_LDAP\User_Proxy;
use OCP\IUserManager;
use OCP\Server;
use Symfony\Component\Console\Helper\Table;
use Symfony\Component\Console\Output\BufferedOutput;
class LdapSection extends Section {
public function __construct(
protected readonly IUserManager $userManager,
) {
parent::__construct('ldap', 'LDAP');
}
#[\Override]
public function getDetails(): array {
$this->createDetail('LDAP configuration', $this->getLDAPInfo(), IDetail::TYPE_COLLAPSIBLE_PREFORMAT);
return parent::getDetails();
}
public function isLDAPEnabled(): bool {
$backends = $this->userManager->getBackends();
foreach ($backends as $backend) {
if ($backend instanceof User_Proxy) {
return true;
}
}
return false;
}
private function getLDAPInfo(): string {
$helper = Server::get(Helper::class);
$output = new BufferedOutput();
// copy of OCA\User_LDAP\Command\ShowConfig::renderConfigs
$configIDs = $helper->getServerConfigurationPrefixes();
foreach ($configIDs as $id) {
$configHolder = new Configuration($id);
$configuration = $configHolder->getConfiguration();
ksort($configuration);
$table = new Table($output);
$table->setHeaders(['Configuration', $id]);
$rows = [];
foreach ($configuration as $key => $value) {
if ($key === 'ldapAgentPassword') {
$value = '***';
}
if (is_array($value)) {
$value = implode(';', $value);
}
$rows[] = [$key, $value];
}
$table->setRows($rows);
$table->render();
}
return $output->fetch();
}
}