@@ -3,6 +3,7 @@ package keystone
3
3
import (
4
4
"time"
5
5
6
+ "errors"
6
7
"github.com/grafana/grafana/pkg/bus"
7
8
"github.com/grafana/grafana/pkg/middleware"
8
9
m "github.com/grafana/grafana/pkg/models"
@@ -17,7 +18,12 @@ const (
17
18
)
18
19
19
20
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 )}
21
27
if err := bus .Dispatch (& userQuery ); err != nil {
22
28
if err == m .ErrUserNotFound {
23
29
return "" , err
@@ -46,10 +52,15 @@ func getNewToken(c *middleware.Context) (string, error) {
46
52
return "" , err
47
53
}
48
54
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
+
49
60
auth := Auth_data {
50
61
Username : username ,
51
62
Project : project ,
52
- Password : c . Session . Get ( middleware . SESS_KEY_PASSWORD ) .(string ),
63
+ Password : keystonePasswordObj .(string ),
53
64
Domain : setting .KeystoneDefaultDomain ,
54
65
Server : setting .KeystoneURL ,
55
66
}
@@ -70,11 +81,11 @@ func validateCurrentToken(c *middleware.Context) (bool, error) {
70
81
return false , nil
71
82
}
72
83
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 ) == "" {
75
86
return false , nil
76
87
}
77
- expiration , err := time .Parse (time .RFC3339 , c . Session . Get ( SESS_TOKEN_EXPIRATION ) .(string ))
88
+ expiration , err := time .Parse (time .RFC3339 , expiration_obj .(string ))
78
89
if err != nil {
79
90
return false , err
80
91
}
@@ -101,7 +112,12 @@ func GetToken(c *middleware.Context) (string, error) {
101
112
var err error
102
113
valid , err := validateCurrentToken (c )
103
114
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
105
121
}
106
122
if token , err = getNewToken (c ); err != nil {
107
123
return "" , err
0 commit comments