diff --git a/src/app/Http/Controllers/API/V4/NGINXController.php b/src/app/Http/Controllers/API/V4/NGINXController.php --- a/src/app/Http/Controllers/API/V4/NGINXController.php +++ b/src/app/Http/Controllers/API/V4/NGINXController.php @@ -193,7 +193,7 @@ // All checks passed switch ($request->headers->get('Auth-Protocol')) { case "imap": - return $this->authenticateIMAP($request, $user->getSetting('guam_enabled', false), $password); + return $this->authenticateIMAP($request, (bool) $user->getSetting('guam_enabled'), $password); case "smtp": return $this->authenticateSMTP($request, $password); default: diff --git a/src/app/Traits/UserConfigTrait.php b/src/app/Traits/UserConfigTrait.php --- a/src/app/Traits/UserConfigTrait.php +++ b/src/app/Traits/UserConfigTrait.php @@ -11,10 +11,17 @@ */ public function getConfig(): array { - $settings = $this->getSettings(['greylist_enabled', 'password_policy', 'max_password_age', 'limit_geo']); + $settings = $this->getSettings([ + 'greylist_enabled', + 'guam_enabled', + 'password_policy', + 'max_password_age', + 'limit_geo' + ]); $config = [ 'greylist_enabled' => $settings['greylist_enabled'] !== 'false', + 'guam_enabled' => $settings['guam_enabled'] === 'true', 'limit_geo' => $settings['limit_geo'] ? json_decode($settings['limit_geo'], true) : [], 'max_password_age' => $settings['max_password_age'], 'password_policy' => $settings['password_policy'], @@ -37,6 +44,8 @@ foreach ($config as $key => $value) { if ($key == 'greylist_enabled') { $this->setSetting($key, $value ? 'true' : 'false'); + } elseif ($key == 'guam_enabled') { + $this->setSetting($key, $value ? 'true' : null); } elseif ($key == 'limit_geo') { if (!is_array($value)) { $errors[$key] = \trans('validation.invalid-limit-geo'); diff --git a/src/resources/lang/en/ui.php b/src/resources/lang/en/ui.php --- a/src/resources/lang/en/ui.php +++ b/src/resources/lang/en/ui.php @@ -461,6 +461,8 @@ 'greylisting-text' => "Greylisting is a method of defending users against spam. Any incoming mail from an unrecognized sender " . "is temporarily rejected. The originating server should try again after a delay. " . "This time the email will be accepted. Spammers usually do not reattempt mail delivery.", + 'imapproxy' => "IMAP proxy", + 'imapproxy-text' => "Enables IMAP proxy that filters out non-mail groupware folders, so your IMAP clients do not see them.", 'list-title' => "User accounts", 'list-empty' => "There are no users in this account.", 'managed-by' => "Managed by", diff --git a/src/resources/vue/Admin/User.vue b/src/resources/vue/Admin/User.vue --- a/src/resources/vue/Admin/User.vue +++ b/src/resources/vue/Admin/User.vue @@ -206,6 +206,15 @@
+ +
+ + {{ $t('form.enabled') }} + {{ $t('form.disabled') }} + +
+
+
diff --git a/src/resources/vue/User/Info.vue b/src/resources/vue/User/Info.vue --- a/src/resources/vue/User/Info.vue +++ b/src/resources/vue/User/Info.vue @@ -93,6 +93,18 @@
+
+ +
+ + + {{ $t('user.imapproxy-text') }} + +
+