diff --git a/dbmodels/access_tokens.go b/dbmodels/access_tokens.go
index 215abd5..7fa54dd 100644
--- a/dbmodels/access_tokens.go
+++ b/dbmodels/access_tokens.go
@@ -5,6 +5,16 @@ import (
"github.com/pocketbase/pocketbase/tools/types"
)
+type FixedAccessToken struct {
+ Token string `json:"token"`
+ User string `json:"user"`
+ Created string `json:"created"`
+ Updated string `json:"updated"`
+ Expires types.DateTime `json:"expires"`
+ URL string `json:"url"`
+ Status string `json:"status"`
+}
+
var _ core.RecordProxy = (*AccessToken)(nil)
type AccessToken struct {
@@ -68,3 +78,15 @@ func (u *AccessToken) Status() string {
func (u *AccessToken) SetStatus(status string) {
u.Set(ACCESS_TOKENS_STATUS_FIELD, status)
}
+
+func (u *AccessToken) Fixed() *FixedAccessToken {
+ return &FixedAccessToken{
+ Token: u.Token(),
+ User: u.User(),
+ Created: u.Created(),
+ Updated: u.Updated(),
+ Expires: u.Expires(),
+ URL: u.URL(),
+ Status: u.Status(),
+ }
+}
diff --git a/middleware/authenticated.go b/middleware/authenticated.go
index 40453ea..e0ff997 100644
--- a/middleware/authenticated.go
+++ b/middleware/authenticated.go
@@ -88,10 +88,10 @@ func Authenticated(app core.App) func(*core.RequestEvent) error {
}
u := dbmodels.NewUser(r)
- e.Set("access_token_user", u)
+ e.Set("access_token_user", u.Fixed())
}
- e.Set("access_token", a)
+ e.Set("access_token", a.Fixed())
}
return e.Next()
diff --git a/pages/suche.go b/pages/suche.go
index 3d7395a..114cce8 100644
--- a/pages/suche.go
+++ b/pages/suche.go
@@ -63,7 +63,7 @@ func (p *SuchePage) Setup(router *router.Router[*core.RequestEvent], app core.Ap
return p.SearchBeitraegeRequest(app, engine, e, *allparas)
}
- data := make(map[string]interface{})
+ data := make(map[string]any)
data["parameters"] = allparas
data["types"] = dbmodels.MUSENALM_TYPE_VALUES
return engine.Response200(e, p.Template+paras.Collection+"/", data, p.Layout)
@@ -77,7 +77,7 @@ func (p *SuchePage) SimpleSearchReihenRequest(app core.App, engine *templating.E
}
func (p *SuchePage) SearchBeitraegeRequest(app core.App, engine *templating.Engine, e *core.RequestEvent, params SearchParameters) error {
- data := make(map[string]interface{})
+ data := make(map[string]any)
filterparams := NewBeitraegeFilterParameters(e)
result, err := NewSearchBeitraege(app, params, filterparams)
if err != nil {
@@ -92,7 +92,7 @@ func (p *SuchePage) SearchBeitraegeRequest(app core.App, engine *templating.Engi
}
func (p *SuchePage) SearchBaendeRequest(app core.App, engine *templating.Engine, e *core.RequestEvent, params SearchParameters) error {
- data := make(map[string]interface{})
+ data := make(map[string]any)
result, err := NewSearchBaende(app, params)
if err != nil {
diff --git a/templating/engine.go b/templating/engine.go
index af40482..dac7a66 100644
--- a/templating/engine.go
+++ b/templating/engine.go
@@ -10,7 +10,6 @@ import (
"strings"
"sync"
- "github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
"github.com/Theodor-Springmann-Stiftung/musenalm/helpers/functions"
"github.com/pocketbase/pocketbase/core"
"golang.org/x/net/websocket"
@@ -257,7 +256,8 @@ func (e *Engine) RenderToString(request *core.RequestEvent, ld map[string]any, p
ld = make(map[string]any)
}
- ld["page"] = requestData(request)
+ r := NewRequest(request)
+ ld["request"] = r.Data()
var builder strings.Builder
err := e.Render(&builder, path, ld, layout...)
@@ -287,7 +287,8 @@ func (e *Engine) Response404(request *core.RequestEvent, err error, data map[str
data["Error"] = err.Error()
}
- data["page"] = requestData(request)
+ r := NewRequest(request)
+ data["request"] = r.Data()
err2 := e.Render(&sb, "/errors/404/", data)
if err2 != nil {
@@ -308,7 +309,8 @@ func (e *Engine) Response500(request *core.RequestEvent, err error, data map[str
data["Error"] = err.Error()
}
- data["page"] = requestData(request)
+ r := NewRequest(request)
+ data["request"] = r.Data()
err2 := e.Render(&sb, "/errors/500/", data)
if err != nil {
@@ -323,7 +325,8 @@ func (e *Engine) Response200(request *core.RequestEvent, path string, ld map[str
ld = make(map[string]any)
}
- ld["page"] = requestData(request)
+ r := NewRequest(request)
+ ld["request"] = r.Data()
var builder strings.Builder
err := e.Render(&builder, path, ld, layout...)
@@ -341,36 +344,3 @@ func (e *Engine) Response200(request *core.RequestEvent, path string, ld map[str
return request.HTML(http.StatusOK, tstring)
}
-
-func requestData(request *core.RequestEvent) map[string]any {
- data := make(map[string]any)
- data["Path"] = request.Request.URL.Path
- data["FullPath"] = GetRequestPathWithQuery(request.Request)
- data["Query"] = request.Request.URL.Query()
- data["Method"] = request.Request.Method
- data["Host"] = request.Request.Host
-
- if user := request.Get("user"); user != nil {
- u, ok := user.(*dbmodels.FixedUser)
- if ok {
- data["User"] = u
- }
- }
-
- if session := request.Get("session"); session != nil {
- u, ok := session.(*dbmodels.FixedSession)
- if ok {
- data["Session"] = u
- }
- }
-
- return data
-}
-
-func GetRequestPathWithQuery(r *http.Request) string {
- path := r.URL.EscapedPath()
- if r.URL.RawQuery != "" {
- return path + "?" + r.URL.RawQuery
- }
- return path
-}
diff --git a/templating/request.go b/templating/request.go
new file mode 100644
index 0000000..7a9bd14
--- /dev/null
+++ b/templating/request.go
@@ -0,0 +1,60 @@
+package templating
+
+import (
+ "github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
+ "github.com/pocketbase/pocketbase/core"
+)
+
+type Request struct {
+ *core.RequestEvent
+}
+
+func NewRequest(e *core.RequestEvent) *Request {
+ return &Request{
+ RequestEvent: e,
+ }
+}
+
+func (r *Request) FullURL() string {
+ path := r.Request.URL.EscapedPath()
+ if r.Request.URL.RawQuery != "" {
+ return path + "?" + r.Request.URL.RawQuery
+ }
+ return path
+}
+
+func (r *Request) Data() map[string]any {
+ data := make(map[string]any)
+ data["path"] = r.Request.URL.Path
+ data["query"] = r.Request.URL.RawQuery
+ data["fullpath"] = r.FullURL()
+ data["method"] = r.Request.Method
+ data["user"] = r.User()
+ data["session"] = r.Session()
+ data["access_token"] = r.AccessToken()
+ return data
+}
+
+func (r *Request) User() *dbmodels.FixedUser {
+ if user := r.Get("user"); user != nil {
+ u, _ := user.(*dbmodels.FixedUser)
+ return u
+ }
+ return nil
+}
+
+func (r *Request) Session() *dbmodels.FixedSession {
+ if session := r.Get("session"); session != nil {
+ s, _ := session.(*dbmodels.FixedSession)
+ return s
+ }
+ return nil
+}
+
+func (r *Request) AccessToken() *dbmodels.FixedAccessToken {
+ if token := r.Get("access_token"); token != nil {
+ t, _ := token.(*dbmodels.FixedAccessToken)
+ return t
+ }
+ return nil
+}
diff --git a/views/layouts/components/_footer.gohtml b/views/layouts/components/_footer.gohtml
index 9d38545..286acb0 100644
--- a/views/layouts/components/_footer.gohtml
+++ b/views/layouts/components/_footer.gohtml
@@ -18,19 +18,19 @@
Code
·
- {{ if .page.User }}
+ {{ if .request.user }}
- {{ if .page.User.Name }}
- {{ .page.User.Name }}
+ {{ if .request.user.Name }}
+ {{ .request.user.Name }}
{{ else }}
- {{ .page.User.Email }}
+ {{ .request.user.Email }}
{{ end }}
|
- Logout
+ Logout
{{ else }}
- Login
+ Login
{{ end }}
diff --git a/views/layouts/components/_menu.gohtml b/views/layouts/components/_menu.gohtml
index bad9e73..0da8901 100644
--- a/views/layouts/components/_menu.gohtml
+++ b/views/layouts/components/_menu.gohtml
@@ -23,27 +23,27 @@
[&>*]:px-2 [&>*]:pt-1 [&>*]:-mb-1.5">
Reihen
Personen
Suche