added @request.context field

This commit is contained in:
Gani Georgiev
2024-02-17 15:01:09 +02:00
parent 6aaf98215d
commit a11abef84b
42 changed files with 79 additions and 43 deletions
+2
View File
@@ -89,6 +89,7 @@ func NewRecordFieldResolver(
loadedCollections: []*models.Collection{baseCollection},
allowedFields: []string{
`^\w+[\w\.\:]*$`,
`^\@request\.context$`,
`^\@request\.method$`,
`^\@request\.auth\.[\w\.\:]*\w+$`,
`^\@request\.data\.[\w\.\:]*\w+$`,
@@ -100,6 +101,7 @@ func NewRecordFieldResolver(
r.staticRequestInfo = map[string]any{}
if r.requestInfo != nil {
r.staticRequestInfo["context"] = r.requestInfo.Context
r.staticRequestInfo["method"] = r.requestInfo.Method
r.staticRequestInfo["query"] = r.requestInfo.Query
r.staticRequestInfo["headers"] = r.requestInfo.Headers
+11 -1
View File
@@ -24,6 +24,7 @@ func TestRecordFieldResolverUpdateQuery(t *testing.T) {
}
requestInfo := &models.RequestInfo{
Context: "ctx",
Headers: map[string]any{
"a": "123",
"b": "456",
@@ -174,6 +175,13 @@ func TestRecordFieldResolverUpdateQuery(t *testing.T) {
false,
"SELECT DISTINCT `demo4`.* FROM `demo4` LEFT JOIN `users` `__auth_users` ON `__auth_users`.`id`={:TEST} LEFT JOIN `demo2` `__auth_users_rel` ON [[__auth_users_rel.id]] = [[__auth_users.rel]] WHERE ({:TEST} > 1 OR {:TEST} > 1 OR [[__auth_users_rel.title]] > 1 OR NULL > 1)",
},
{
"@request.* static fields",
"demo4",
"@request.context = true || @request.query.a = true || @request.query.b = true || @request.query.missing = true || @request.headers.a = true || @request.headers.missing = true",
false,
"SELECT `demo4`.* FROM `demo4` WHERE ({:TEST} = 1 OR '' = 1 OR {:TEST} = 1 OR '' = 1 OR {:TEST} = 1 OR '' = 1)",
},
{
"hidden field with system filters (multi-match and ignore emailVisibility)",
"demo4",
@@ -459,7 +467,8 @@ func TestRecordFieldResolverResolveStaticRequestInfoFields(t *testing.T) {
}
requestInfo := &models.RequestInfo{
Method: "get",
Context: "ctx",
Method: "get",
Query: map[string]any{
"a": 123,
},
@@ -486,6 +495,7 @@ func TestRecordFieldResolverResolveStaticRequestInfoFields(t *testing.T) {
{"@request.invalid format", true, ""},
{"@request.invalid_format2!", true, ""},
{"@request.missing", true, ""},
{"@request.context", false, `"ctx"`},
{"@request.method", false, `"get"`},
{"@request.query", true, ``},
{"@request.query.a", false, `123`},