Skip to content
Snippets Groups Projects
Unverified Commit 47ac0543 authored by Kali Kaneko's avatar Kali Kaneko Committed by meskio
Browse files

[feat] improve error handling during login

parent 2cf32806
No related branches found
No related tags found
No related merge requests found
......@@ -3,7 +3,6 @@ package main
/* a wrapper around bitmask that exposes status to a QtQml gui.
Have a look at the pkg/backend module for further enlightment. */
// #cgo CXXFLAGS: -mmacosx-version-min=10.10
import (
"C"
"unsafe"
......
......@@ -48,7 +48,7 @@ ApplicationWindow {
function showInitFailure(msg) {
console.debug("ERRORS:", ctx.errors)
if (msg == undefined) {
if (ctx.errors == 'bad_auth_502') {
if (ctx.errors == 'bad_auth_502' || ctx.errors == 'bad_auth_timeout') {
msg = qsTr("Oops! The authentication service seems down. Please try again later")
initFailure.title = qsTr("Service Error")
}
......
......@@ -18,10 +18,12 @@ import (
func Login(username, password string) {
success, err := ctx.bm.DoLogin(username, password)
if err != nil {
log.Printf("Error on login: %v", err)
if err.Error() == "Cannot get token: Error 502" {
if err.Error() == "TokenErrTimeout" {
ctx.Errors = "bad_auth_timeout"
} else if err.Error() == "TokenErrBadStatus 502" {
ctx.Errors = "bad_auth_502"
} else {
log.Println("ERROR: bad login", err)
ctx.Errors = "bad_auth"
}
} else if success {
......@@ -29,7 +31,6 @@ func Login(username, password string) {
ctx.LoginOk = true
ctx.LoginDialog = false
} else {
// TODO: display login again with an err
log.Printf("Failed to login as %s", username)
ctx.LoginDialog = true
ctx.Errors = "bad_auth"
......
......@@ -44,15 +44,21 @@ func (a *sipAuthentication) getToken(user, password string) ([]byte, error) {
}
credJSON, err := formatCredentials(user, password)
if err != nil {
return nil, fmt.Errorf("Cannot encode credentials: %s", err)
log.Println("ERROR: cannot encode credentials.", err)
return nil, fmt.Errorf("TokenErrBadCred")
}
resp, err := a.client.Post(a.authURI, "text/json", strings.NewReader(credJSON))
if err != nil {
return nil, fmt.Errorf("Error on auth request: %v", err)
log.Println("ERROR: failed auth request", err)
if os.IsTimeout(err) {
return nil, fmt.Errorf("TokenErrTimeout")
} else {
return nil, fmt.Errorf("TokenErrBadPost")
}
}
defer resp.Body.Close()
if resp.StatusCode != 200 {
return nil, fmt.Errorf("Cannot get token: Error %d", resp.StatusCode)
return nil, fmt.Errorf("TokenErrBadStatus %d", resp.StatusCode)
}
token, err := ioutil.ReadAll(resp.Body)
if err != nil {
......
......@@ -85,6 +85,7 @@ func New() *Bonafide {
RootCAs: certs,
},
},
Timeout: time.Second * 10,
}
_, tzOffsetSeconds := time.Now().Zone()
tzOffsetHours := tzOffsetSeconds / secondsPerHour
......@@ -129,6 +130,8 @@ func (b *Bonafide) DoLogin(username, password string) (bool, error) {
}
var err error
log.Println("Bonafide: getting token...")
b.token, err = b.auth.getToken(username, password)
if err != nil {
return false, err
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment