4 changed files with 135 additions and 12 deletions
@ -1,18 +1,54 @@ |
|||
package web |
|||
|
|||
import ( |
|||
root "marmic/servicetrade-toolbox" |
|||
"bytes" |
|||
"html/template" |
|||
"net/http" |
|||
|
|||
root "marmic/servicetrade-toolbox" |
|||
"marmic/servicetrade-toolbox/internal/api" |
|||
"marmic/servicetrade-toolbox/internal/middleware" |
|||
|
|||
"github.com/gorilla/csrf" |
|||
) |
|||
|
|||
func GenericHandler(w http.ResponseWriter, r *http.Request) { |
|||
session, ok := r.Context().Value(middleware.SessionKey).(*api.Session) |
|||
if !ok { |
|||
http.Error(w, "Unauthorized", http.StatusUnauthorized) |
|||
return |
|||
} |
|||
|
|||
tmpl := root.WebTemplates |
|||
var csrfCookie string |
|||
if c, err := r.Cookie("XSRF-TOKEN"); err == nil { |
|||
csrfCookie = c.Value |
|||
} else if c, err := r.Cookie("XSRF-TOKEN-VALUE"); err == nil { |
|||
csrfCookie = c.Value |
|||
} |
|||
data := map[string]interface{}{ |
|||
"Title": "Generic", |
|||
"Title": "Generic", |
|||
"Session": session, |
|||
"CSRFField": csrf.TemplateField(r), |
|||
"CSRFToken": csrf.Token(r), |
|||
"CSRFCookie": csrfCookie, |
|||
} |
|||
|
|||
if r.Header.Get("HX-Request") == "true" { |
|||
if err := tmpl.ExecuteTemplate(w, "generic_content", data); err != nil { |
|||
http.Error(w, "Internal Server Error", http.StatusInternalServerError) |
|||
} |
|||
return |
|||
} |
|||
|
|||
var contentBuf bytes.Buffer |
|||
if err := tmpl.ExecuteTemplate(&contentBuf, "generic_content", data); err != nil { |
|||
http.Error(w, "Internal Server Error", http.StatusInternalServerError) |
|||
return |
|||
} |
|||
data["BodyContent"] = template.HTML(contentBuf.String()) |
|||
|
|||
err := tmpl.Execute(w, data) |
|||
if err != nil { |
|||
if err := tmpl.ExecuteTemplate(w, "layout.html", data); err != nil { |
|||
http.Error(w, "Internal Server Error", http.StatusInternalServerError) |
|||
} |
|||
} |
|||
|
|||
Loading…
Reference in new issue