diff --git a/gui/qml/LoginDialog.qml b/gui/qml/LoginDialog.qml
index 1724769dc8cf2b3344ed2937935a5329a8c26786..897081b7c3a7ce2d9f0d23e7d6e40307800fd1fb 100644
--- a/gui/qml/LoginDialog.qml
+++ b/gui/qml/LoginDialog.qml
@@ -18,6 +18,7 @@ Dialog {
             id: password
             placeholderText: qsTr("password")
             echoMode: TextInput.PasswordEchoOnEdit
+            visible: !allowEmptyPass
         }
     }
 
diff --git a/gui/qml/main.qml b/gui/qml/main.qml
index f0a2b5c1c6827ff8f57d76605e401af98020c286..f03034525d8047817bb7ce8cfa37b816030d54d8 100644
--- a/gui/qml/main.qml
+++ b/gui/qml/main.qml
@@ -11,6 +11,7 @@ ApplicationWindow {
 
     property var ctx
     property var loginDone 
+    property var allowEmptyPass
 
     Connections {
         target: jsonModel
@@ -46,8 +47,20 @@ ApplicationWindow {
     }
 
     function showInitFailure(msg) {
-          initFailure.text = msg
-          initFailure.visible  = true
+      initFailure.text = msg
+      initFailure.visible  = true
+    }
+
+    function shouldAllowEmptyPass() {
+        let obj = JSON.parse(providers.getJson())
+        let active = obj['default']
+        let allProviders = obj['providers']
+        for (let i = 0; i < allProviders.length; i++) {
+            if (allProviders[i]['name'] === active) {
+                return (allProviders[i]['authEmptyPass'] === 'true')
+            }
+        }
+        return false
     }
 
     Component.onCompleted: {
@@ -59,9 +72,11 @@ ApplicationWindow {
          Loaders as a placeholder for all the many dialogs, or to load
          a nice splash screen etc...  */
 
-        console.debug("Pre-seeded providers:");
+        console.debug("DEBUG: Pre-seeded providers:");
         console.debug(providers.getJson());
 
+        allowEmptyPass = shouldAllowEmptyPass()
+
         app.visible = true;
         show();
         hide();