Skip to content

Commit 0ed0765

Browse files
committed
Log a message when session times out instead of dumping a stack trace
1 parent 5f9d52d commit 0ed0765

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

pkg/api/keystone/keystone.go

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package keystone
33
import (
44
"time"
55

6+
"errors"
67
"github.com/grafana/grafana/pkg/bus"
78
"github.com/grafana/grafana/pkg/middleware"
89
m "github.com/grafana/grafana/pkg/models"
@@ -17,7 +18,12 @@ const (
1718
)
1819

1920
func getUserName(c *middleware.Context) (string, error) {
20-
userQuery := m.GetUserByIdQuery{Id: c.Session.Get(middleware.SESS_KEY_USERID).(int64)}
21+
var keystoneUserIdObj interface{}
22+
if keystoneUserIdObj = c.Session.Get(middleware.SESS_KEY_USERID); keystoneUserIdObj == nil {
23+
return "", errors.New("Session timed out trying to get keystone userId")
24+
}
25+
26+
userQuery := m.GetUserByIdQuery{Id: keystoneUserIdObj.(int64)}
2127
if err := bus.Dispatch(&userQuery); err != nil {
2228
if err == m.ErrUserNotFound {
2329
return "", err
@@ -46,10 +52,15 @@ func getNewToken(c *middleware.Context) (string, error) {
4652
return "", err
4753
}
4854

55+
var keystonePasswordObj interface{}
56+
if keystonePasswordObj = c.Session.Get(middleware.SESS_KEY_PASSWORD); keystonePasswordObj == nil {
57+
return "", errors.New("Session timed out trying to get keystone password")
58+
}
59+
4960
auth := Auth_data{
5061
Username: username,
5162
Project: project,
52-
Password: c.Session.Get(middleware.SESS_KEY_PASSWORD).(string),
63+
Password: keystonePasswordObj.(string),
5364
Domain: setting.KeystoneDefaultDomain,
5465
Server: setting.KeystoneURL,
5566
}
@@ -70,11 +81,11 @@ func validateCurrentToken(c *middleware.Context) (bool, error) {
7081
return false, nil
7182
}
7283

73-
expiration_string := c.Session.Get(SESS_TOKEN_EXPIRATION).(string)
74-
if expiration_string == "" {
84+
expiration_obj := c.Session.Get(SESS_TOKEN_EXPIRATION)
85+
if expiration_obj == nil || expiration_obj.(string) == "" {
7586
return false, nil
7687
}
77-
expiration, err := time.Parse(time.RFC3339, c.Session.Get(SESS_TOKEN_EXPIRATION).(string))
88+
expiration, err := time.Parse(time.RFC3339, expiration_obj.(string))
7889
if err != nil {
7990
return false, err
8091
}
@@ -101,7 +112,12 @@ func GetToken(c *middleware.Context) (string, error) {
101112
var err error
102113
valid, err := validateCurrentToken(c)
103114
if valid {
104-
return c.Session.Get(SESS_TOKEN).(string), nil
115+
116+
var sessionTokenObj interface{}
117+
if sessionTokenObj = c.Session.Get(SESS_TOKEN); sessionTokenObj == nil {
118+
return "", errors.New("Session timed out trying to get token")
119+
}
120+
return sessionTokenObj.(string), nil
105121
}
106122
if token, err = getNewToken(c); err != nil {
107123
return "", err

0 commit comments

Comments
 (0)