|
@@ -10,15 +10,19 @@ import (
|
|
|
"github.com/zalando/go-keyring"
|
|
"github.com/zalando/go-keyring"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
-type DoneFn func(token string, err error)
|
|
|
|
|
|
|
+type doneFn func(token string, err error)
|
|
|
|
|
|
|
|
-type LoginForm struct {
|
|
|
|
|
|
|
+type loginForm struct {
|
|
|
*tview.Form
|
|
*tview.Form
|
|
|
- done DoneFn
|
|
|
|
|
|
|
+ done doneFn
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func NewLoginForm(done DoneFn) *LoginForm {
|
|
|
|
|
- lf := &LoginForm{
|
|
|
|
|
|
|
+func newLoginForm(done doneFn) *loginForm {
|
|
|
|
|
+ if done == nil {
|
|
|
|
|
+ done = func(_ string, _ error) {}
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ lf := &loginForm{
|
|
|
Form: tview.NewForm(),
|
|
Form: tview.NewForm(),
|
|
|
done: done,
|
|
done: done,
|
|
|
}
|
|
}
|
|
@@ -41,7 +45,7 @@ func NewLoginForm(done DoneFn) *LoginForm {
|
|
|
return lf
|
|
return lf
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func (lf *LoginForm) login() {
|
|
|
|
|
|
|
+func (lf *loginForm) login() {
|
|
|
email := lf.GetFormItem(0).(*tview.InputField).GetText()
|
|
email := lf.GetFormItem(0).(*tview.InputField).GetText()
|
|
|
password := lf.GetFormItem(1).(*tview.InputField).GetText()
|
|
password := lf.GetFormItem(1).(*tview.InputField).GetText()
|
|
|
if email == "" || password == "" {
|
|
if email == "" || password == "" {
|
|
@@ -53,10 +57,7 @@ func (lf *LoginForm) login() {
|
|
|
// Log in using the provided email and password.
|
|
// Log in using the provided email and password.
|
|
|
lr, err := apiClient.Login(email, password)
|
|
lr, err := apiClient.Login(email, password)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- if lf.done != nil {
|
|
|
|
|
- lf.done("", err)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
|
|
+ lf.done("", err)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -64,28 +65,19 @@ func (lf *LoginForm) login() {
|
|
|
if lr.MFA && lr.Token == "" {
|
|
if lr.MFA && lr.Token == "" {
|
|
|
code := lf.GetFormItem(2).(*tview.InputField).GetText()
|
|
code := lf.GetFormItem(2).(*tview.InputField).GetText()
|
|
|
if code == "" {
|
|
if code == "" {
|
|
|
- if lf.done != nil {
|
|
|
|
|
- lf.done("", errors.New("code required"))
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
|
|
+ lf.done("", errors.New("code required"))
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
lr, err = apiClient.TOTP(code, lr.Ticket)
|
|
lr, err = apiClient.TOTP(code, lr.Ticket)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- if lf.done != nil {
|
|
|
|
|
- lf.done("", err)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
|
|
+ lf.done("", err)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if lr.Token == "" {
|
|
if lr.Token == "" {
|
|
|
- if lf.done != nil {
|
|
|
|
|
- lf.done("", errors.New("missing token"))
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
|
|
+ lf.done("", errors.New("missing token"))
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -93,14 +85,10 @@ func (lf *LoginForm) login() {
|
|
|
if rememberMe {
|
|
if rememberMe {
|
|
|
go func() {
|
|
go func() {
|
|
|
if err := keyring.Set(constants.Name, "token", lr.Token); err != nil {
|
|
if err := keyring.Set(constants.Name, "token", lr.Token); err != nil {
|
|
|
- if lf.done != nil {
|
|
|
|
|
- lf.done("", err)
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ lf.done("", err)
|
|
|
}
|
|
}
|
|
|
}()
|
|
}()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if lf.done != nil {
|
|
|
|
|
- lf.done(lr.Token, nil)
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ lf.done(lr.Token, nil)
|
|
|
}
|
|
}
|