fix: use ActivityPub actor ID for shared trails/lists search token filtering (#1014)

* fix: use ActivityPub actor ID for shared trails/lists search token filtering

* fix deprecated meili token storage

---------

Co-authored-by: Flomp <Flomp@users.noreply.github.com>
Co-authored-by: Christian Beutel <>
This commit is contained in:
Pål Håland
2026-05-31 16:25:42 +02:00
committed by GitHub
parent 903013823e
commit 64b39685ed
2 changed files with 3 additions and 24 deletions

View File

@@ -12,36 +12,16 @@ import (
func CreateUserHandler(client meilisearch.ServiceManager) func(e *core.RecordEvent) error {
return func(e *core.RecordEvent) error {
userId := e.Record.Id
err := createDefaultUserSettings(e.App, e.Record.Id)
if err != nil {
return err
}
actor, err := util.ActorFromUser(e.App, e.Record)
_, err = util.ActorFromUser(e.App, e.Record)
if err != nil {
return err
}
searchRules := map[string]interface{}{
"lists": map[string]string{
"filter": "public = true OR author = " + actor.Id + " OR shares = " + userId,
},
"trails": map[string]string{
"filter": "public = true OR author = " + actor.Id + " OR shares = " + userId,
},
}
token, err := util.GenerateMeilisearchToken(searchRules, client)
if err != nil {
return err
}
e.Record.Set("token", token)
if err := e.App.Save(e.Record); err != nil {
return err
}
return e.Next()
}
}

View File

@@ -16,7 +16,6 @@ func SearchToken(client meilisearch.ServiceManager) func(e *core.RequestEvent) e
}
if e.Auth != nil {
userId := e.Auth.Id
userActor, err := e.App.FindFirstRecordByData("activitypub_actors", "user", e.Auth.Id)
if err != nil {
return err
@@ -24,10 +23,10 @@ func SearchToken(client meilisearch.ServiceManager) func(e *core.RequestEvent) e
searchRules = map[string]any{
"lists": map[string]string{
"filter": "public = true OR author = " + userActor.Id + " OR shares = " + userId,
"filter": "public = true OR author = " + userActor.Id + " OR shares = " + userActor.Id,
},
"trails": map[string]string{
"filter": "public = true OR author = " + userActor.Id + " OR shares = " + userId,
"filter": "public = true OR author = " + userActor.Id + " OR shares = " + userActor.Id,
},
}
}