@@ -13,6 +13,7 @@ import (
13
13
m "github.com/grafana/grafana/pkg/models"
14
14
"github.com/grafana/grafana/pkg/setting"
15
15
"github.com/grafana/grafana/pkg/util"
16
+ "gopkg.in/macaron.v1"
16
17
)
17
18
18
19
const (
@@ -117,7 +118,14 @@ func LoginPost(c *middleware.Context, cmd dtos.LoginCommand) Response {
117
118
cmd .Password = keystone .EncryptPassword (cmd .Password )
118
119
}
119
120
if setting .KeystoneCookieCredentials {
120
- c .SetCookie (middleware .SESS_KEY_PASSWORD , cmd .Password )
121
+ log .Debug ("c.Req.Header.Get(\" X-Forwarded-Proto\" ): %s" , c .Req .Header .Get ("X-Forwarded-Proto" ))
122
+ var days interface {}
123
+ if setting .LogInRememberDays == 0 {
124
+ days = nil
125
+ } else {
126
+ days = 86400 * setting .LogInRememberDays
127
+ }
128
+ c .SetCookie (middleware .SESS_KEY_PASSWORD , cmd .Password , days , setting .AppSubUrl + "/" , nil , isSecure (& c .Req ), true )
121
129
} else {
122
130
c .Session .Set (middleware .SESS_KEY_PASSWORD , cmd .Password )
123
131
}
@@ -144,17 +152,22 @@ func loginUserWithUser(user *m.User, c *middleware.Context) {
144
152
145
153
days := 86400 * setting .LogInRememberDays
146
154
if days > 0 {
147
- c .SetCookie (setting .CookieUserName , user .Login , days , setting .AppSubUrl + "/" )
148
- c .SetSuperSecureCookie (util .EncodeMd5 (user .Rands + user .Password ), setting .CookieRememberName , user .Login , days , setting .AppSubUrl + "/" )
155
+ c .SetCookie (setting .CookieUserName , user .Login , days , setting .AppSubUrl + "/" , nil , isSecure (& c .Req ), true )
156
+ c .SetSuperSecureCookie (util .EncodeMd5 (user .Rands + user .Password ),
157
+ setting .CookieRememberName , user .Login , days , setting .AppSubUrl + "/" , nil , isSecure (& c .Req ), true )
149
158
}
150
159
151
160
c .Session .Set (middleware .SESS_KEY_USERID , user .Id )
152
161
}
153
162
154
163
func Logout (c * middleware.Context ) {
155
- c .SetCookie (setting .CookieUserName , "" , - 1 , setting .AppSubUrl + "/" )
156
- c .SetCookie (setting .CookieRememberName , "" , - 1 , setting .AppSubUrl + "/" )
157
- c .SetCookie (middleware .SESS_KEY_PASSWORD , "" , - 1 , setting .AppSubUrl + "/" )
164
+ c .SetCookie (setting .CookieUserName , "" , - 1 , setting .AppSubUrl + "/" , nil , isSecure ( & c . Req ), true )
165
+ c .SetCookie (setting .CookieRememberName , "" , - 1 , setting .AppSubUrl + "/" , nil , isSecure ( & c . Req ), true )
166
+ c .SetCookie (middleware .SESS_KEY_PASSWORD , "" , - 1 , setting .AppSubUrl + "/" , nil , isSecure ( & c . Req ), true )
158
167
c .Session .Destory (c )
159
168
c .Redirect (setting .AppSubUrl + "/login" )
160
169
}
170
+
171
+ func isSecure (r * macaron.Request ) bool {
172
+ return (r .TLS != nil ) || (r .Header .Get ("X-Forwarded-Proto" ) == "https" )
173
+ }
0 commit comments