diff --git a/lib/Controller/PageController.php b/lib/Controller/PageController.php
index 7d9e54b..fd2087a 100644
--- a/lib/Controller/PageController.php
+++ b/lib/Controller/PageController.php
@@ -83,10 +83,13 @@ public function index()
$reason = null;
$roundCubeUrl = $this->authenticator->externalURL();
+ $allowManualLogin = $this->config->getAppValue(Config::ALLOW_MANUAL_LOGIN);
+ $credentials = null;
if (empty($roundCubeUrl)) {
$state = self::ERROR_STATE;
$reason = self::ERROR_NORCURL_REASON;
- } else {
+ } elseif (!$allowManualLogin) {
+ // Only check credentials if manual login is not allowed
$credentials = $this->config->emailCredentials();
if (empty($credentials)) {
$state = self::ERROR_STATE;
diff --git a/lib/Controller/SettingsController.php b/lib/Controller/SettingsController.php
index ec1570c..c0310ce 100644
--- a/lib/Controller/SettingsController.php
+++ b/lib/Controller/SettingsController.php
@@ -62,6 +62,7 @@ class SettingsController extends Controller
Config::ENABLE_SSL_VERIFY => [ 'rw' => true, 'default' => Config::ENABLE_SSL_VERIFY_DEFAULT, ],
Config::PERSONAL_ENCRYPTION => [ 'rw' => true, 'default' => Config::PERSONAL_ENCRYPTION_DEFAULT, ],
Config::CARDDAV_PROVISIONG_TAG => [ 'rw' => true, 'default' => Config::CARDDAV_PROVISIONG_TAG_DEFAULT, ],
+ Config::ALLOW_MANUAL_LOGIN => [ 'rw' => true, 'default' => Config::ALLOW_MANUAL_LOGIN_DEFAULT, ],
];
public const EMAIL_ADDRESS = 'emailAddress';
@@ -162,6 +163,7 @@ public function setAdmin(string $setting, mixed $value, bool $force = false):Dat
case Config::SHOW_TOP_LINE:
case Config::ENABLE_SSL_VERIFY:
case Config::PERSONAL_ENCRYPTION:
+ case Config::ALLOW_MANUAL_LOGIN:
$newValue = filter_var($value, FILTER_VALIDATE_BOOLEAN, ['flags' => FILTER_NULL_ON_FAILURE]);
if ($newValue === null) {
return self::grumble($this->l->t(
@@ -249,6 +251,7 @@ public function getAdmin(?string $setting = null):DataResponse
case Config::SHOW_TOP_LINE:
case Config::ENABLE_SSL_VERIFY:
case Config::PERSONAL_ENCRYPTION:
+ case Config::ALLOW_MANUAL_LOGIN:
if ($humanValue !== null) {
$humanValue = $humanValue ? $this->l->t('true') : $this->l->t('false');
}
diff --git a/lib/Service/Config.php b/lib/Service/Config.php
index 115dea5..145bb5a 100644
--- a/lib/Service/Config.php
+++ b/lib/Service/Config.php
@@ -70,6 +70,8 @@ class Config
public const PERSONAL_ENCRYPTION_DEFAULT = false;
public const CARDDAV_PROVISIONG_TAG = 'cardDavProvisioningTag';
public const CARDDAV_PROVISIONG_TAG_DEFAULT = '';
+ public const ALLOW_MANUAL_LOGIN = 'allowManualLogin';
+ public const ALLOW_MANUAL_LOGIN_DEFAULT = false;
const SETTINGS = [
self::EXTERNAL_LOCATION => self::EXTERNAL_LOCATION_DEFAULT,
@@ -80,6 +82,7 @@ class Config
self::ENABLE_SSL_VERIFY => self::ENABLE_SSL_VERIFY_DEFAULT,
self::PERSONAL_ENCRYPTION => self::PERSONAL_ENCRYPTION_DEFAULT,
self::CARDDAV_PROVISIONG_TAG => self::CARDDAV_PROVISIONG_TAG_DEFAULT,
+ self::ALLOW_MANUAL_LOGIN => self::ALLOW_MANUAL_LOGIN_DEFAULT,
];
/** @var \OCP\IUser */
diff --git a/src/AdminSettings.vue b/src/AdminSettings.vue
index c8e36e0..410f2b2 100644
--- a/src/AdminSettings.vue
+++ b/src/AdminSettings.vue
@@ -156,6 +156,20 @@
+
+