Skip to content

Commit

Permalink
feat: added login's initial possible email-states
Browse files Browse the repository at this point in the history
Signed-off-by: Eduardo Morales <emoral435@gmail.com>
  • Loading branch information
emoral435 committed Mar 11, 2024
1 parent 6608b7d commit 0045eec
Showing 1 changed file with 31 additions and 0 deletions.
31 changes: 31 additions & 0 deletions core/Controller/LoginController.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@
use OC\Authentication\WebAuthn\Manager as WebAuthnManager;
use OC\User\Session;
use OC_App;
use OCA\User_LDAP\Configuration;
use OCA\User_LDAP\Helper;
use OCP\App\IAppManager;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\Attribute\OpenAPI;
Expand Down Expand Up @@ -81,6 +84,7 @@ public function __construct(
private WebAuthnManager $webAuthnManager,
private IManager $manager,
private IL10N $l10n,
private IAppManager $appManager,
) {
parent::__construct($appName, $request);
}
Expand Down Expand Up @@ -172,6 +176,8 @@ public function showLoginForm(string $user = null, string $redirect_url = null):

$this->setPasswordResetInitialState($user);

$this->setEmailStates();

$this->initialStateService->provideInitialState('core', 'webauthn-available', $this->webAuthnManager->isWebAuthnAvailable());

$this->initialStateService->provideInitialState('core', 'hideLoginForm', $this->config->getSystemValueBool('hide_login_form', false));
Expand Down Expand Up @@ -226,6 +232,31 @@ private function setPasswordResetInitialState(?string $username): void {
$this->canResetPassword($passwordLink, $user)
);
}

/**
* Sets the initial state of whether or not a user is allowed to login with their email
* initial state is passed in the array of 1 for email allowed and 0 for not allowed
*/
private function setEmailStates(): void {
$emailStates = []; // true: can login with email, false otherwise - default to true

// check if user_ldap is enabled, and the required classes exist
if ($this->appManager->isAppLoaded('user_ldap')
&& class_exists(Helper::class)) {
$helper = \OCP\Server::get(Helper::class);
$allPrefixes = $helper->getServerConfigurationPrefixes();
// check each LDAP server the user is connected too
foreach ($allPrefixes as $prefix) {
$emailConfig = new Configuration($prefix);
array_push($emailStates, $emailConfig->__get('ldapLoginFilterEmail'));
}
}
$this->initialStateService->
provideInitialState(
'core',
'emailStates',
$emailStates);
}

/**
* @param string|null $passwordLink
Expand Down

0 comments on commit 0045eec

Please sign in to comment.