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 6dc6dae
Show file tree
Hide file tree
Showing 3 changed files with 97 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-2023 WoltLab GmbH
* @license WoltLab License <http://www.woltlab.com/license-agreement.html>
*/
final class UserAuthenticationConfiguration
{
public function __construct(
public readonly bool $canRegister = true,
public readonly bool $canLogin = 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,43 @@
<?php

namespace wcf\system\user\authentication\configuration;

use wcf\system\appmaker\app\preset\event\ConfigurationLoading;
use wcf\system\event\EventHandler;
use wcf\system\SingletonFactory;

/**
* Provides the instance of the active configuration of the user authentication process.
*
* @author Marcel Werk
* @copyright 2001-2023 WoltLab GmbH
* @license WoltLab License <http://www.woltlab.com/license-agreement.html>
*/
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,32 @@
<?php

namespace wcf\system\appmaker\app\preset\event;

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

/**
* Indicates the loading of the configuration.
*
* @author Marcel Werk
* @copyright 2001-2023 WoltLab GmbH
* @license WoltLab License <http://www.woltlab.com/license-agreement.html>
*/
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 6dc6dae

Please sign in to comment.