chore(webui): refactor login and session middleware handling

This commit is contained in:
Julien Dessaux 2025-01-14 22:24:05 -05:00
parent 1292d189cf
commit 7885b19b54
Signed by: adyxax
GPG key ID: F92E51B86E07177E
2 changed files with 9 additions and 9 deletions

View file

@ -88,9 +88,9 @@ func handleLoginPOST(db *database.DB) http.Handler {
})
}
func loginMiddleware(db *database.DB) func(http.Handler) http.Handler {
func loginMiddleware(db *database.DB, requireSession func(http.Handler) http.Handler) func(http.Handler) http.Handler {
return func(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
return requireSession(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Cache-Control", "no-store, no-cache")
session := r.Context().Value(model.SessionContextKey{})
if session == nil {
@ -110,6 +110,6 @@ func loginMiddleware(db *database.DB) func(http.Handler) http.Handler {
}
ctx := context.WithValue(r.Context(), model.AccountContextKey{}, account)
next.ServeHTTP(w, r.WithContext(ctx))
})
}))
}
}

View file

@ -10,12 +10,12 @@ func addRoutes(
mux *http.ServeMux,
db *database.DB,
) {
session := sessionsMiddleware(db)
requireLogin := loginMiddleware(db)
requireSession := sessionsMiddleware(db)
requireLogin := loginMiddleware(db, requireSession)
mux.Handle("GET /healthz", handleHealthz())
mux.Handle("GET /login", session(handleLoginGET()))
mux.Handle("POST /login", session(handleLoginPOST(db)))
mux.Handle("GET /logout", session(requireLogin(handleLogoutGET(db))))
mux.Handle("GET /login", requireSession(handleLoginGET()))
mux.Handle("POST /login", requireSession(handleLoginPOST(db)))
mux.Handle("GET /logout", requireLogin(handleLogoutGET(db)))
mux.Handle("GET /static/", cache(http.FileServer(http.FS(staticFS))))
mux.Handle("GET /", session(requireLogin(handleIndexGET())))
mux.Handle("GET /", requireLogin(handleIndexGET()))
}