forked from tangled.org/core
Monorepo for Tangled — https://tangled.org

fix redirect in follow/star buttons

Changed files
+15 -5
appview
+15 -5
appview/state/middleware.go
···
func AuthMiddleware(s *State) Middleware {
return func(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+
redirectFunc := func(w http.ResponseWriter, r *http.Request) {
+
http.Redirect(w, r, "/login", http.StatusTemporaryRedirect)
+
}
+
if r.Header.Get("HX-Request") == "true" {
+
redirectFunc = func(w http.ResponseWriter, _ *http.Request) {
+
w.Header().Set("HX-Redirect", "/login")
+
w.WriteHeader(http.StatusOK)
+
}
+
}
+
session, err := s.auth.GetSession(r)
if session.IsNew || err != nil {
log.Printf("not logged in, redirecting")
-
http.Redirect(w, r, "/login", http.StatusTemporaryRedirect)
+
redirectFunc(w, r)
return
}
authorized, ok := session.Values[appview.SessionAuthenticated].(bool)
if !ok || !authorized {
log.Printf("not logged in, redirecting")
-
http.Redirect(w, r, "/login", http.StatusTemporaryRedirect)
+
redirectFunc(w, r)
return
}
···
expiry, err := time.Parse(time.RFC3339, expiryStr)
if err != nil {
log.Println("invalid expiry time", err)
-
http.Redirect(w, r, "/login", http.StatusTemporaryRedirect)
+
redirectFunc(w, r)
return
}
pdsUrl, ok1 := session.Values[appview.SessionPds].(string)
···
if !ok1 || !ok2 || !ok3 {
log.Println("invalid expiry time", err)
-
http.Redirect(w, r, "/login", http.StatusTemporaryRedirect)
+
redirectFunc(w, r)
return
}
···
atSession, err := comatproto.ServerRefreshSession(r.Context(), &client)
if err != nil {
log.Println("failed to refresh session", err)
-
http.Redirect(w, r, "/login", http.StatusTemporaryRedirect)
+
redirectFunc(w, r)
return
}