From 08baff9e64654a737aa8953b0d491025411c1371 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 21 Nov 2022 17:18:11 +0100 Subject: [PATCH] Added domain matcher test for #689 --- dev/Settings/Admin/Domains.js | 18 ++++++++++- .../libraries/RainLoop/Actions/UserAuth.php | 32 +++++++++++-------- .../app/libraries/RainLoop/ActionsAdmin.php | 17 ++++++++++ .../Views/Admin/AdminSettingsDomains.html | 4 +++ 4 files changed, 57 insertions(+), 14 deletions(-) diff --git a/dev/Settings/Admin/Domains.js b/dev/Settings/Admin/Domains.js index e248d7063..cbaa0888a 100644 --- a/dev/Settings/Admin/Domains.js +++ b/dev/Settings/Admin/Domains.js @@ -11,10 +11,26 @@ import { DomainAliasPopupView } from 'View/Popup/DomainAlias'; export class AdminSettingsDomains /*extends AbstractViewSettings*/ { constructor() { this.domains = DomainAdminStore; - + this.username = ko.observable(''); this.domainForDeletion = ko.observable(null).askDeleteHelper(); } + testUsername() { + // TODO: find domain matching username + Remote.request('AdminDomainMatch', + (iError, oData) => { + if (oData?.Result?.domain) { + alert('Matched domain: ' + oData.Result.domain.name); + } else { + alert('No domain match'); + } + }, + { + username: this.username() + } + ); + } + createDomain() { showScreenPopup(DomainPopupView); } diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/UserAuth.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/UserAuth.php index 5d93c2117..ebb1ffe65 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/UserAuth.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/UserAuth.php @@ -21,10 +21,8 @@ trait UserAuth /** * @throws \RainLoop\Exceptions\ClientException */ - public function LoginProcess(string &$sEmail, string &$sPassword, bool $bSignMe = false, bool $bMainAccount = true): Account + protected function resolveLoginCredentials(string &$sEmail, string &$sPassword, string &$sLogin): void { - $sInputEmail = $sEmail; - $this->Plugins()->RunHook('login.credentials.step-1', array(&$sEmail)); $sEmail = \MailSo\Base\Utils::Trim($sEmail); @@ -101,22 +99,30 @@ trait UserAuth $this->Plugins()->RunHook('login.credentials.step-2', array(&$sEmail, &$sPassword)); - if (!\str_contains($sEmail, '@') || !\strlen($sPassword)) { - $this->loginErrorDelay(); - - throw new ClientException(Notifications::InvalidInputArgument); - } - - $this->Logger()->AddSecret($sPassword); - $sLogin = $sEmail; if ($this->Config()->Get('login', 'login_lowercase', true)) { $sLogin = \mb_strtolower($sLogin); } - $this->Plugins()->RunHook('login.credentials', array(&$sEmail, &$sLogin, &$sPassword)); - $this->Logger()->AddSecret($sPassword); + $this->Plugins()->RunHook('login.credentials', array(&$sEmail, &$sLogin, &$sPassword)); + $this->Logger()->AddSecret($sPassword); + } + + /** + * @throws \RainLoop\Exceptions\ClientException + */ + public function LoginProcess(string &$sEmail, string &$sPassword, bool $bSignMe = false, bool $bMainAccount = true): Account + { + $sInputEmail = $sEmail; + + $sLogin = ''; + $this->resolveLoginCredentials($sEmail, $sPassword, $sLogin); + + if (!\str_contains($sEmail, '@') || !\strlen($sPassword)) { + $this->loginErrorDelay(); + throw new ClientException(Notifications::InvalidInputArgument); + } $oAccount = null; try { diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/ActionsAdmin.php b/snappymail/v/0.0.0/app/libraries/RainLoop/ActionsAdmin.php index 75b17796d..1be08fcd5 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/ActionsAdmin.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/ActionsAdmin.php @@ -253,6 +253,23 @@ class ActionsAdmin extends Actions )); } + public function DoAdminDomainMatch() : array + { + $sEmail = $this->GetActionParam('username'); + $sPassword = '********'; + $sLogin = ''; + $this->resolveLoginCredentials($sEmail, $sPassword, $sLogin); + $oDomain = \str_contains($sEmail, '@') + ? $this->DomainProvider()->Load(\MailSo\Base\Utils::GetDomainFromEmail($sEmail), true) + : null; + return $this->DefaultResponse(__FUNCTION__, array( + 'email' => $sEmail, + 'login' => $sLogin, + 'domain' => $oDomain, + 'whitelist' => $oDomain ? $oDomain->ValidateWhiteList($sEmail, $sLogin) : null + )); + } + public function DoAdminDomainTest() : array { $this->IsAdminLoggined(); diff --git a/snappymail/v/0.0.0/app/templates/Views/Admin/AdminSettingsDomains.html b/snappymail/v/0.0.0/app/templates/Views/Admin/AdminSettingsDomains.html index bc2ebd538..fd3b9b555 100644 --- a/snappymail/v/0.0.0/app/templates/Views/Admin/AdminSettingsDomains.html +++ b/snappymail/v/0.0.0/app/templates/Views/Admin/AdminSettingsDomains.html @@ -32,3 +32,7 @@ +