From 68a49f353954bb32289f6e80281b2ed14312f679 Mon Sep 17 00:00:00 2001
From: "kali kaneko (leap communications)" <kali@leap.se>
Date: Tue, 8 Sep 2020 17:46:09 +0200
Subject: [PATCH] [feat] be more precise when login gives 502

---
 gui/qml/main.qml   | 6 +++++-
 pkg/backend/api.go | 6 +++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/gui/qml/main.qml b/gui/qml/main.qml
index 4d0e648c..fc47be0d 100644
--- a/gui/qml/main.qml
+++ b/gui/qml/main.qml
@@ -46,7 +46,11 @@ ApplicationWindow {
     function showInitFailure(msg) {
       console.debug("ERRORS:", ctx.errors)
       if (msg == undefined) {
-          if (ctx.errors == 'bad_auth') {
+          if (ctx.errors == 'bad_auth_502') {
+                  msg = qsTr("Oops! The authentication service seems down. Please try again later")
+              initFailure.title = qsTr("Service Error")
+          }
+          else if (ctx.errors == 'bad_auth') {
               if (allowEmptyPass) {
                   // For now, this is a libraryVPN, so we can be explicit about what credentials are here.
                   // Another option to consider is to customize the error strings while vendoring.
diff --git a/pkg/backend/api.go b/pkg/backend/api.go
index 1985e6b0..ea148f77 100644
--- a/pkg/backend/api.go
+++ b/pkg/backend/api.go
@@ -18,7 +18,11 @@ func Login(username, password string) {
 	success, err := ctx.bm.DoLogin(username, password)
 	if err != nil {
 		log.Printf("Error on login: %v", err)
-		ctx.Errors = "bad_auth"
+		if err.Error() == "Cannot get token: Error 502" {
+			ctx.Errors = "bad_auth_502"
+		} else {
+			ctx.Errors = "bad_auth"
+		}
 	} else if success {
 		log.Printf("Logged in as %s", username)
 		ctx.LoginOk = true
-- 
GitLab