Skip to content

Commit

Permalink
User authentication configuration
Browse files Browse the repository at this point in the history
A central location for the configuration should make it easier to disable certain unwanted functions in SSO plugins.
  • Loading branch information
BurntimeX committed Mar 26, 2024
1 parent e1d5b9e commit 70d29ef
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

namespace wcf\system\user\authentication\configuration;

/**
* Represents the configuration of the user authentication process.
*
* @author Marcel Werk
* @copyright 2001-2024 WoltLab GmbH
* @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
* @since 6.1
*/
final class UserAuthenticationConfiguration
{
public function __construct(
public readonly bool $canRegister = true,
public readonly bool $canChangeUsername = true,
public readonly bool $canChangeEmail = true,
public readonly bool $canChangePassword = true,
) {
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<?php

namespace wcf\system\user\authentication\configuration;

use wcf\system\event\EventHandler;
use wcf\system\SingletonFactory;
use wcf\system\user\authentication\configuration\event\ConfigurationLoading;

/**
* Provides the instance of the active configuration of the user authentication process.
*
* @author Marcel Werk
* @copyright 2001-2024 WoltLab GmbH
* @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
* @since 6.1
*/
final class UserAuthenticationConfigurationFactory extends SingletonFactory
{
private UserAuthenticationConfiguration $configuration;

#[\Override]
protected function init()
{
$this->configuration = $this->getDefaultConfiguration();

$event = new ConfigurationLoading();
EventHandler::getInstance()->fire($event);
if ($event->getConfigration()) {
$this->configuration = $event->getConfigration();
}
}

public function getConfigration(): UserAuthenticationConfiguration
{
return $this->configuration;
}

private function getDefaultConfiguration(): UserAuthenticationConfiguration
{
return new UserAuthenticationConfiguration(
!\REGISTER_DISABLED,
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php

namespace wcf\system\user\authentication\configuration\event;

use wcf\system\event\IEvent;
use wcf\system\user\authentication\configuration\UserAuthenticationConfiguration;

/**
* Indicates the loading of the configuration.
*
* @author Marcel Werk
* @copyright 2001-2024 WoltLab GmbH
* @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
* @since 6.1
*/
final class ConfigurationLoading implements IEvent
{
private UserAuthenticationConfiguration $configuration;

public function register(UserAuthenticationConfiguration $configuration): void
{
if (isset($this->configuration)) {
throw new \BadMethodCallException("A configuration has already been loaded");
}

$this->configuration = $configuration;
}

public function getConfigration(): ?UserAuthenticationConfiguration
{
return $this->configuration ?? null;
}
}

0 comments on commit 70d29ef

Please sign in to comment.