Browse Source

Fix critical issue with non-existing session

Alexey Edelev 5 years ago
parent
commit
82de4628c3
1 changed files with 9 additions and 5 deletions
  1. 9 5
      web/server.go

+ 9 - 5
web/server.go

@@ -170,11 +170,15 @@ func (s *Server) handleLogout(w http.ResponseWriter, r *http.Request) {
 func (s *Server) logout(w http.ResponseWriter, r *http.Request) {
 	fmt.Println("logout")
 
-	session, _ := s.sessionStore.Get(r, CookieSessionToken)
-	s.storage.RemoveToken(session.Values["user"].(string), session.Values["token"].(string))
-	session.Values["user"] = ""
-	session.Values["token"] = ""
-	session.Save(r, w)
+	session, err := s.sessionStore.Get(r, CookieSessionToken)
+	if err == nil {
+		if session.Values["user"] != nil && session.Values["token"] != nil {
+			s.storage.RemoveToken(session.Values["user"].(string), session.Values["token"].(string))
+		}
+		session.Values["user"] = ""
+		session.Values["token"] = ""
+		session.Save(r, w)
+	}
 }
 
 func (s *Server) login(user, token string, w http.ResponseWriter, r *http.Request) {