Skip to content
Snippets Groups Projects
Commit a0a32f6c authored by Florent Gluck's avatar Florent Gluck
Browse files

Fixed bug in token refresh in nexus-exam

parent 8b74aaa7
No related branches found
No related tags found
No related merge requests found
......@@ -44,7 +44,7 @@ func (cmd *Ls)Run(args []string) int {
func (cmd *Ls)listDir(dir string) {
fis, err := ioutil.ReadDir(dir)
if err != nil {
u.Println("Failed reading \""+dir+"\" directory: "+err.Error())
u.PrintlnErr("Failed reading \""+dir+"\" directory: "+err.Error())
return
}
......
......@@ -89,5 +89,6 @@ require (
golang.org/x/text v0.14.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
honnef.co/go/js/dom v0.0.0-20210725211120-f030747120f2 // indirect
nexus-client/cmdToken v0.0.0-00010101000000-000000000000 // indirect
nexus-common/caps v0.0.0-00010101000000-000000000000 // indirect
)
......@@ -19,6 +19,7 @@ import (
"nexus-client/version"
"nexus-client/defaults"
"nexus-client/cmdLogin"
"nexus-client/cmdToken"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/theme"
......@@ -54,6 +55,7 @@ func exit(code int) {
func attachVM(parent fyne.Window, hostname, cert, pwd string) {
client := g.GetInstance().Client
host := g.GetInstance().Host
setHeaderToken()
p := &params.VMAttachCreds{ Pwd: pwd }
resp, err := client.R().SetBody(p).Post(host+"/vms/spicecreds")
......@@ -133,37 +135,26 @@ func hypervisorCheck() {
}
}
// Recurrently obtains a new JWT token so that the user session doesn't expire.
func refreshToken(parent fyne.Window) {
func setHeaderToken() {
client := g.GetInstance().Client
host := g.GetInstance().Host
client.SetHeader("Content-Type", "application/json")
client.SetHeader("Authorization", "Bearer "+token)
}
// Recurrently obtains a new JWT token so that the user session doesn't expire.
func refreshToken(parent fyne.Window) {
for {
resp, err := client.R().Get(host+"/token/refresh")
setHeaderToken()
refreshedToken, err := cmdToken.GetToken()
if err != nil {
errorPopup(parent, "Failed refreshing token (code 1)")
u.PrintlnErr(buildversion.BuildDate(), ": failed refreshing token (code 1)")
errorPopup(parent, "Failed refreshing token")
u.PrintlnErr(time.Now(), ": failed refreshing token: "+err.Error())
break
} else {
if resp.IsSuccess() {
type Response struct {
Token string
}
var response Response
err = json.Unmarshal(resp.Body(), &response)
if err != nil {
errorPopup(parent, "Failed refreshing token (code 2)")
u.PrintlnErr(buildversion.BuildDate(), ": failed refreshing token (code 2)")
} else {
token = response.Token
u.Println(buildversion.BuildDate(), ": successfully refreshed token")
}
} else {
// errorPopup(parent, resp.Status()+": "+resp.String())
errorPopup(parent, "Failed refreshing token (code 3)")
u.PrintlnErr(buildversion.BuildDate(), ": failed refreshing token (code 3)")
}
u.Println(time.Now(), ": successfully refreshed token")
}
time.Sleep(1*time.Hour)
token = refreshedToken
time.Sleep(30*time.Second)
}
}
......@@ -229,9 +220,6 @@ func run() int {
abortWindow("Failed obtaining token (network issue?)")
}
client.SetHeader("Content-Type", "application/json")
client.SetHeader("Authorization", "Bearer "+token)
app := app.New()
app.Settings().SetTheme(theme.LightTheme())
win := app.NewWindow(windowTitle)
......
......@@ -212,14 +212,14 @@ Type: "help" for help on commands
quit = true
continue
} else {
u.Println("Error reading line: ", err)
u.PrintlnErr("Error reading line: ", err)
continue
}
line = strings.TrimSpace(line)
args, err := extractArgs(line)
if err != nil {
u.Println("invalid command line: "+err.Error())
u.PrintlnErr("invalid command line: "+err.Error())
continue
}
if args == nil {
......@@ -245,7 +245,7 @@ Type: "help" for help on commands
if typedCmd == "refresh" {
refreshedToken, err := cmdToken.GetToken()
if err != nil {
u.Println("refresh error: "+err.Error())
u.PrintlnErr("refresh error: "+err.Error())
break
}
token = refreshedToken
......@@ -256,7 +256,7 @@ Type: "help" for help on commands
break
}
} else {
u.Println(typedCmd+": unknown command")
u.PrintlnErr(typedCmd+": unknown command")
}
}
}
......
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