mirror of
https://github.com/Theodor-Springmann-Stiftung/musenalm.git
synced 2025-10-28 16:55:32 +00:00
request type
This commit is contained in:
@@ -5,6 +5,16 @@ import (
|
|||||||
"github.com/pocketbase/pocketbase/tools/types"
|
"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)
|
var _ core.RecordProxy = (*AccessToken)(nil)
|
||||||
|
|
||||||
type AccessToken struct {
|
type AccessToken struct {
|
||||||
@@ -68,3 +78,15 @@ func (u *AccessToken) Status() string {
|
|||||||
func (u *AccessToken) SetStatus(status string) {
|
func (u *AccessToken) SetStatus(status string) {
|
||||||
u.Set(ACCESS_TOKENS_STATUS_FIELD, status)
|
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(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -88,10 +88,10 @@ func Authenticated(app core.App) func(*core.RequestEvent) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
u := dbmodels.NewUser(r)
|
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()
|
return e.Next()
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ func (p *SuchePage) Setup(router *router.Router[*core.RequestEvent], app core.Ap
|
|||||||
return p.SearchBeitraegeRequest(app, engine, e, *allparas)
|
return p.SearchBeitraegeRequest(app, engine, e, *allparas)
|
||||||
}
|
}
|
||||||
|
|
||||||
data := make(map[string]interface{})
|
data := make(map[string]any)
|
||||||
data["parameters"] = allparas
|
data["parameters"] = allparas
|
||||||
data["types"] = dbmodels.MUSENALM_TYPE_VALUES
|
data["types"] = dbmodels.MUSENALM_TYPE_VALUES
|
||||||
return engine.Response200(e, p.Template+paras.Collection+"/", data, p.Layout)
|
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 {
|
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)
|
filterparams := NewBeitraegeFilterParameters(e)
|
||||||
result, err := NewSearchBeitraege(app, params, filterparams)
|
result, err := NewSearchBeitraege(app, params, filterparams)
|
||||||
if err != nil {
|
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 {
|
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)
|
result, err := NewSearchBaende(app, params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
|
|
||||||
"github.com/Theodor-Springmann-Stiftung/musenalm/helpers/functions"
|
"github.com/Theodor-Springmann-Stiftung/musenalm/helpers/functions"
|
||||||
"github.com/pocketbase/pocketbase/core"
|
"github.com/pocketbase/pocketbase/core"
|
||||||
"golang.org/x/net/websocket"
|
"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 = make(map[string]any)
|
||||||
}
|
}
|
||||||
|
|
||||||
ld["page"] = requestData(request)
|
r := NewRequest(request)
|
||||||
|
ld["request"] = r.Data()
|
||||||
|
|
||||||
var builder strings.Builder
|
var builder strings.Builder
|
||||||
err := e.Render(&builder, path, ld, layout...)
|
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["Error"] = err.Error()
|
||||||
}
|
}
|
||||||
|
|
||||||
data["page"] = requestData(request)
|
r := NewRequest(request)
|
||||||
|
data["request"] = r.Data()
|
||||||
|
|
||||||
err2 := e.Render(&sb, "/errors/404/", data)
|
err2 := e.Render(&sb, "/errors/404/", data)
|
||||||
if err2 != nil {
|
if err2 != nil {
|
||||||
@@ -308,7 +309,8 @@ func (e *Engine) Response500(request *core.RequestEvent, err error, data map[str
|
|||||||
data["Error"] = err.Error()
|
data["Error"] = err.Error()
|
||||||
}
|
}
|
||||||
|
|
||||||
data["page"] = requestData(request)
|
r := NewRequest(request)
|
||||||
|
data["request"] = r.Data()
|
||||||
|
|
||||||
err2 := e.Render(&sb, "/errors/500/", data)
|
err2 := e.Render(&sb, "/errors/500/", data)
|
||||||
if err != nil {
|
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 = make(map[string]any)
|
||||||
}
|
}
|
||||||
|
|
||||||
ld["page"] = requestData(request)
|
r := NewRequest(request)
|
||||||
|
ld["request"] = r.Data()
|
||||||
|
|
||||||
var builder strings.Builder
|
var builder strings.Builder
|
||||||
err := e.Render(&builder, path, ld, layout...)
|
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)
|
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
|
|
||||||
}
|
|
||||||
|
|||||||
60
templating/request.go
Normal file
60
templating/request.go
Normal file
@@ -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
|
||||||
|
}
|
||||||
@@ -18,19 +18,19 @@
|
|||||||
<i class="ri-code-line"></i>
|
<i class="ri-code-line"></i>
|
||||||
<a href="https://github.com/Theodor-Springmann-Stiftung/musenalm">Code</a>
|
<a href="https://github.com/Theodor-Springmann-Stiftung/musenalm">Code</a>
|
||||||
<span>·</span>
|
<span>·</span>
|
||||||
{{ if .page.User }}
|
{{ if .request.user }}
|
||||||
<i class="ri-user-3-line"></i>
|
<i class="ri-user-3-line"></i>
|
||||||
{{ if .page.User.Name }}
|
{{ if .request.user.Name }}
|
||||||
<b>{{ .page.User.Name }}</b>
|
<b>{{ .request.user.Name }}</b>
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<b>{{ .page.User.Email }}</b>
|
<b>{{ .request.user.Email }}</b>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
|
||||||
<i class="ri-logout-box-line"></i>
|
<i class="ri-logout-box-line"></i>
|
||||||
<a href="/logout?redirectTo={{ .page.FullPath }}">Logout</a>
|
<a href="/logout?redirectTo={{ .request.fullpath }}">Logout</a>
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<i class="ri-login-box-line"></i>
|
<i class="ri-login-box-line"></i>
|
||||||
<a href="/login?redirectTo={{ .page.FullPath }}">Login</a>
|
<a href="/login?redirectTo={{ .request.fullpath }}">Login</a>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -23,27 +23,27 @@
|
|||||||
[&>*]:px-2 [&>*]:pt-1 [&>*]:-mb-1.5">
|
[&>*]:px-2 [&>*]:pt-1 [&>*]:-mb-1.5">
|
||||||
<a
|
<a
|
||||||
href="/reihen/"
|
href="/reihen/"
|
||||||
{{ if and $model.page (HasPrefix $model.page.Path "/reihe") -}}
|
{{ if and $model.request (HasPrefix $model.request.path "/reihe") -}}
|
||||||
aria-current="page"
|
aria-current="page"
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
>Reihen</a
|
>Reihen</a
|
||||||
>
|
>
|
||||||
<a
|
<a
|
||||||
href="/personen/"
|
href="/personen/"
|
||||||
{{ if and $model.page (HasPrefix $model.page.Path "/person") -}}
|
{{ if and $model.request (HasPrefix $model.request.path "/person") -}}
|
||||||
aria-current="page"
|
aria-current="page"
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
>Personen</a
|
>Personen</a
|
||||||
>
|
>
|
||||||
<a
|
<a
|
||||||
href="/suche/"
|
href="/suche/"
|
||||||
{{ if and $model.page (HasPrefix $model.page.Path "/suche") -}}
|
{{ if and $model.request (HasPrefix $model.request.path "/suche") -}}
|
||||||
aria-current="page"
|
aria-current="page"
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
>Suche</a
|
>Suche</a
|
||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
{{ if and $model.page (HasPrefix $model.page.Path "/redaktion") -}}
|
{{ if and $model.request (HasPrefix $model.request.path "/redaktion") -}}
|
||||||
aria-current="true"
|
aria-current="true"
|
||||||
{{- end }}
|
{{- end }}
|
||||||
data-url="/redaktion/"
|
data-url="/redaktion/"
|
||||||
@@ -64,42 +64,42 @@
|
|||||||
[&>a]:no-underline [&>*]:-mb-1.5 w-full pr-2.5 [&>*]:px-1.5">
|
[&>a]:no-underline [&>*]:-mb-1.5 w-full pr-2.5 [&>*]:px-1.5">
|
||||||
<a
|
<a
|
||||||
href="/redaktion/einleitung/"
|
href="/redaktion/einleitung/"
|
||||||
{{ if and $model.page (HasPrefix $model.page.Path "/redaktion/einleitung") -}}
|
{{ if and $model.request (HasPrefix $model.request.path "/redaktion/einleitung") -}}
|
||||||
aria-current="page"
|
aria-current="page"
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
>Einleitung</a
|
>Einleitung</a
|
||||||
>
|
>
|
||||||
<a
|
<a
|
||||||
href="/redaktion/benutzerhinweise/"
|
href="/redaktion/benutzerhinweise/"
|
||||||
{{ if and $model.page (HasPrefix $model.page.Path "/redaktion/benutzerhinweise") -}}
|
{{ if and $model.request (HasPrefix $model.request.path "/redaktion/benutzerhinweise") -}}
|
||||||
aria-current="page"
|
aria-current="page"
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
>Benutzerhinweise</a
|
>Benutzerhinweise</a
|
||||||
>
|
>
|
||||||
<a
|
<a
|
||||||
href="/redaktion/literatur/"
|
href="/redaktion/literatur/"
|
||||||
{{ if and $model.page (HasPrefix $model.page.Path "/redaktion/literatur") -}}
|
{{ if and $model.request (HasPrefix $model.request.path "/redaktion/literatur") -}}
|
||||||
aria-current="page"
|
aria-current="page"
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
>Literatur</a
|
>Literatur</a
|
||||||
>
|
>
|
||||||
<a
|
<a
|
||||||
href="/redaktion/lesekabinett/"
|
href="/redaktion/lesekabinett/"
|
||||||
{{ if and $model.page (HasPrefix $model.page.Path "/redaktion/lesekabinett") -}}
|
{{ if and $model.request (HasPrefix $model.request.path "/redaktion/lesekabinett") -}}
|
||||||
aria-current="page"
|
aria-current="page"
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
>Lesekabinett</a
|
>Lesekabinett</a
|
||||||
>
|
>
|
||||||
<a
|
<a
|
||||||
href="/redaktion/danksagungen/"
|
href="/redaktion/danksagungen/"
|
||||||
{{ if and $model.page (HasPrefix $model.page.Path "/redaktion/danksagungen") -}}
|
{{ if and $model.request (HasPrefix $model.request.path "/redaktion/danksagungen") -}}
|
||||||
aria-current="page"
|
aria-current="page"
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
>Danksagungen</a
|
>Danksagungen</a
|
||||||
>
|
>
|
||||||
<a
|
<a
|
||||||
href="/redaktion/kontakt/"
|
href="/redaktion/kontakt/"
|
||||||
{{ if and $model.page (HasPrefix $model.page.Path "/redaktion/kontakt") -}}
|
{{ if and $model.request (HasPrefix $model.request.path "/redaktion/kontakt") -}}
|
||||||
aria-current="page"
|
aria-current="page"
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
>Kontakt</a
|
>Kontakt</a
|
||||||
|
|||||||
Reference in New Issue
Block a user