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 @@ + +