snapshot of https://github.com/cortezaproject/corteza.git (2024.9.x, 2026-09-18; blobs > 131072B omitted)
Some checks failed
SonarQube / SonarQube (push) Failing after 5m28s
E2e test on main branch push / server and client test (map[name:admin port:8080]) (push) Failing after 3m33s
Server and lib tests / Library test (js) (push) Failing after 1m36s
Server and lib tests / Library test (vue) (push) Successful in 2m24s
Server and lib tests / Web client test (admin) (push) Successful in 2m52s
Server and lib tests / Web client test (compose) (push) Successful in 3m23s
Server and lib tests / Web client test (discovery) (push) Successful in 2m49s
Server and lib tests / Web client test (one) (push) Successful in 2m52s
Server and lib tests / Web client test (privacy) (push) Successful in 2m44s
Server and lib tests / Web client test (reporter) (push) Successful in 2m56s
Server and lib tests / Web client test (workflow) (push) Successful in 3m0s
Server and lib tests / Server tests (push) Failing after 4m55s
E2e test on main branch push / notify-failure (push) Failing after 9s
Server and lib tests / Send matrix testing notification (push) Successful in 2s
Mark stale issues and pull requests / stale (push) Successful in 40s
Some checks failed
SonarQube / SonarQube (push) Failing after 5m28s
E2e test on main branch push / server and client test (map[name:admin port:8080]) (push) Failing after 3m33s
Server and lib tests / Library test (js) (push) Failing after 1m36s
Server and lib tests / Library test (vue) (push) Successful in 2m24s
Server and lib tests / Web client test (admin) (push) Successful in 2m52s
Server and lib tests / Web client test (compose) (push) Successful in 3m23s
Server and lib tests / Web client test (discovery) (push) Successful in 2m49s
Server and lib tests / Web client test (one) (push) Successful in 2m52s
Server and lib tests / Web client test (privacy) (push) Successful in 2m44s
Server and lib tests / Web client test (reporter) (push) Successful in 2m56s
Server and lib tests / Web client test (workflow) (push) Successful in 3m0s
Server and lib tests / Server tests (push) Failing after 4m55s
E2e test on main branch push / notify-failure (push) Failing after 9s
Server and lib tests / Send matrix testing notification (push) Successful in 2s
Mark stale issues and pull requests / stale (push) Successful in 40s
This commit is contained in:
74
server/auth/templates.go
Normal file
74
server/auth/templates.go
Normal file
@@ -0,0 +1,74 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"embed"
|
||||
"html/template"
|
||||
"io"
|
||||
)
|
||||
|
||||
//go:embed assets/templates/*.tpl
|
||||
var Templates embed.FS
|
||||
|
||||
type (
|
||||
templateLoader func(tpls *template.Template) (tpl *template.Template, err error)
|
||||
|
||||
templates struct {
|
||||
reload bool
|
||||
}
|
||||
|
||||
templateExecutor interface {
|
||||
ExecuteTemplate(io.Writer, string, interface{}, ...func(*template.Template) *template.Template) error
|
||||
}
|
||||
|
||||
templateReloader struct {
|
||||
base *template.Template
|
||||
loader templateLoader
|
||||
}
|
||||
|
||||
templateStatic struct {
|
||||
base *template.Template
|
||||
}
|
||||
)
|
||||
|
||||
func NewReloadableTemplates(base *template.Template, loader templateLoader) *templateReloader {
|
||||
return &templateReloader{
|
||||
base: base,
|
||||
loader: loader,
|
||||
}
|
||||
}
|
||||
|
||||
// Reloads templates before every execution
|
||||
//
|
||||
// This is great for local development
|
||||
func (t templateReloader) ExecuteTemplate(w io.Writer, name string, data interface{}, oo ...func(*template.Template) *template.Template) error {
|
||||
tpl, err := t.loader(applyTemplateExecOpt(t.base, oo...))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return tpl.ExecuteTemplate(w, name, data)
|
||||
}
|
||||
|
||||
func NewStaticTemplates(base *template.Template, loader templateLoader) (s *templateStatic, err error) {
|
||||
s = &templateStatic{}
|
||||
s.base, err = loader(base)
|
||||
return
|
||||
}
|
||||
|
||||
// ExecuteTemplate executes preloaded templates
|
||||
func (t templateStatic) ExecuteTemplate(w io.Writer, name string, data interface{}, oo ...func(*template.Template) *template.Template) error {
|
||||
return applyTemplateExecOpt(t.base, oo...).ExecuteTemplate(w, name, data)
|
||||
}
|
||||
|
||||
// EmbeddedTemplates returns embedded templates.
|
||||
func EmbeddedTemplates(t *template.Template) (tpl *template.Template, err error) {
|
||||
return t.ParseFS(Templates, "assets/templates/*.html.tpl")
|
||||
}
|
||||
|
||||
func applyTemplateExecOpt(t *template.Template, oo ...func(*template.Template) *template.Template) *template.Template {
|
||||
for _, fn := range oo {
|
||||
t = fn(t)
|
||||
}
|
||||
|
||||
return t
|
||||
}
|
||||
Reference in New Issue
Block a user