Add signout method
authorr <r@freesoftwareextremist.com>
Fri, 13 Dec 2019 20:23:15 +0000 (20:23 +0000)
committerr <r@freesoftwareextremist.com>
Fri, 13 Dec 2019 20:23:15 +0000 (20:23 +0000)
service/transport.go

index f4f5ed77814f41878251028a1a106ca679e7d352..709a2ff2b61f58e837ac1ac5454b08f502b39417 100644 (file)
@@ -29,11 +29,15 @@ func NewHandler(s Service, staticDir string) http.Handler {
                http.FileServer(http.Dir(path.Join(".", staticDir)))))
 
        r.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
-               err := s.ServeHomePage(ctx, w)
-               if err != nil {
-                       s.ServeErrorPage(ctx, w, err)
-                       return
+               location := "/signin"
+
+               sessionID, _ := req.Cookie("session_id")
+               if sessionID != nil && len(sessionID.Value) > 0 {
+                       location = "/timeline"
                }
+
+               w.Header().Add("Location", location)
+               w.WriteHeader(http.StatusSeeOther)
        }).Methods(http.MethodGet)
 
        r.HandleFunc("/signin", func(w http.ResponseWriter, req *http.Request) {
@@ -157,9 +161,20 @@ func NewHandler(s Service, staticDir string) http.Handler {
                        return
                }
 
-               w.Header().Add("Location", req.Header.Get("Referer"))
+               location := "/timeline"
+               if len(replyToID) > 0 {
+                       location = "/thread/" + replyToID
+               }
+               w.Header().Add("Location", location)
                w.WriteHeader(http.StatusSeeOther)
        }).Methods(http.MethodPost)
 
+       r.HandleFunc("/signout", func(w http.ResponseWriter, req *http.Request) {
+               // TODO remove session from database
+               w.Header().Add("Set-Cookie", fmt.Sprintf("session_id=;max-age=0"))
+               w.Header().Add("Location", "/")
+               w.WriteHeader(http.StatusSeeOther)
+       }).Methods(http.MethodGet)
+
        return r
 }