77 lines
1.6 KiB
Go
77 lines
1.6 KiB
Go
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/templating"
|
|
|
|
_ "embed"
|
|
)
|
|
|
|
type Legal struct {
|
|
component.Base
|
|
dependencies struct {
|
|
Static *assets.Static
|
|
Templating *templating.Templating
|
|
}
|
|
}
|
|
|
|
var (
|
|
_ component.Routeable = (*Legal)(nil)
|
|
)
|
|
|
|
//go:embed "legal.html"
|
|
var legalHTML []byte
|
|
var legalTemplate = templating.Parse[legalContext](
|
|
"legal.html", legalHTML, nil,
|
|
|
|
templating.Title("Legal"),
|
|
templating.Assets(assets.AssetsDefault),
|
|
)
|
|
|
|
type legalContext struct {
|
|
templating.RuntimeFlags
|
|
|
|
LegalNotices string
|
|
|
|
CSRFCookie string
|
|
SessionCookie string
|
|
AssetsDisclaimer string
|
|
}
|
|
|
|
func (legal *Legal) Routes() component.Routes {
|
|
return component.Routes{
|
|
Prefix: "/legal/",
|
|
Exact: true,
|
|
|
|
CSRF: false,
|
|
}
|
|
}
|
|
|
|
var (
|
|
menuLegal = component.MenuItem{Title: "Legal", Path: "/legal/"}
|
|
)
|
|
|
|
func (legal *Legal) HandleRoute(ctx context.Context, route string) (http.Handler, error) {
|
|
tpl := legalTemplate.Prepare(
|
|
legal.dependencies.Templating,
|
|
templating.Crumbs(
|
|
menuLegal,
|
|
),
|
|
)
|
|
|
|
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
|
|
}
|