diff --git a/pkg/api/login.go b/pkg/api/login.go index 83a2a2713eb..d2bbf4e81b9 100644 --- a/pkg/api/login.go +++ b/pkg/api/login.go @@ -36,7 +36,7 @@ func LoginView(c *middleware.Context) { viewData.Settings["disableLoginForm"] = setting.DisableLoginForm if loginError, ok := c.Session.Get("loginError").(string); ok { - c.Session.Set("loginError", "") // TODO: is there a proper way to delete a session var? + c.Session.Delete("loginError") viewData.Settings["loginError"] = loginError } diff --git a/pkg/middleware/session.go b/pkg/middleware/session.go index dad2ad20efc..a6af63d18de 100644 --- a/pkg/middleware/session.go +++ b/pkg/middleware/session.go @@ -93,6 +93,8 @@ type SessionStore interface { Set(interface{}, interface{}) error // Get gets value by given key in session. Get(interface{}) interface{} + // Delete deletes a key from session. + Delete(interface{}) interface{} // ID returns current session ID. ID() string // Release releases session resource and save data to provider. @@ -128,6 +130,13 @@ func (s *SessionWrapper) Get(k interface{}) interface{} { return nil } +func (s *SessionWrapper) Delete(k interface{}) interface{} { + if s.session != nil { + return s.session.Delete(k) + } + return nil +} + func (s *SessionWrapper) ID() string { if s.session != nil { return s.session.ID()