|
|
@@ -41,6 +41,9 @@ use OC\Authentication\Login\LoginData; |
|
|
|
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\FrontpageRoute; |
|
|
@@ -82,6 +85,7 @@ class LoginController extends Controller { |
|
|
|
private WebAuthnManager $webAuthnManager, |
|
|
|
private IManager $manager, |
|
|
|
private IL10N $l10n, |
|
|
|
private IAppManager $appManager, |
|
|
|
) { |
|
|
|
parent::__construct($appName, $request); |
|
|
|
} |
|
|
@@ -176,6 +180,8 @@ class LoginController extends Controller { |
|
|
|
|
|
|
|
$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)); |
|
|
@@ -230,6 +236,31 @@ class LoginController extends Controller { |
|
|
|
$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 |