package legal import ( "context" "net/http" "github.com/FAU-CDI/wisski-distillery/internal/cli" "github.com/FAU-CDI/wisski-distillery/internal/dis/component" "github.com/FAU-CDI/wisski-distillery/internal/dis/component/server" "github.com/FAU-CDI/wisski-distillery/internal/dis/component/server/assets" "github.com/FAU-CDI/wisski-distillery/internal/dis/component/server/templates" _ "embed" ) type Legal struct { component.Base Dependencies struct { Static *assets.Static Templating *templates.Templating } } var ( _ component.Routeable = (*Legal)(nil) ) //go:embed "legal.html" var legalHTML []byte var legalTemplate = templates.Parse[legalContext]("legal.html", legalHTML, assets.AssetsDefault) type legalContext struct { templates.BaseContext LegalNotices string CSRFCookie string SessionCookie string AssetsDisclaimer string } func (legal *Legal) Routes() component.Routes { return component.Routes{ Prefix: "/legal/", Exact: true, CSRF: false, } } func (legal *Legal) HandleRoute(ctx context.Context, route string) (http.Handler, error) { tpl := legalTemplate.Prepare(legal.Dependencies.Templating, templates.BaseContextGaps{ Crumbs: []component.MenuItem{ {Title: "Legal", Path: "/legal/"}, }, }) return tpl.HTMLHandler(func(r *http.Request) (lc legalContext, err error) { lc.LegalNotices = cli.LegalNotices lc.CSRFCookie = server.CSRFCookie lc.SessionCookie = server.SessionCookie lc.AssetsDisclaimer = assets.Disclaimer return }), nil }