Skip to content

Commit 4b39ef0

Browse files
committed
Add entity filters back in for api
1 parent 1ae247b commit 4b39ef0

File tree

20 files changed

+243
-201
lines changed

20 files changed

+243
-201
lines changed

backend/internal/api/middleware/filters.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@ import (
55
"encoding/json"
66
"fmt"
77
"net/http"
8+
"strings"
89

910
c "npm/internal/api/context"
1011
h "npm/internal/api/http"
12+
"npm/internal/entity"
1113
"npm/internal/model"
1214
"npm/internal/util"
13-
"strings"
1415

1516
"github.com/qri-io/jsonschema"
1617
)
@@ -19,7 +20,9 @@ import (
1920
// passed in to this endpoint. This will ensure that the filters are not injecting SQL.
2021
// After we have determined what the Filters are to be, they are saved on the Context
2122
// to be used later in other endpoints.
22-
func Filters(schemaData string) func(http.Handler) http.Handler {
23+
func Filters(obj interface{}) func(http.Handler) http.Handler {
24+
schemaData := entity.GetFilterSchema(obj, true)
25+
2326
reservedFilterKeys := []string{
2427
"limit",
2528
"offset",
@@ -93,9 +96,10 @@ func Filters(schemaData string) func(http.Handler) http.Handler {
9396
return
9497
}
9598

99+
// todo: populate filters object with the gorm database name
100+
96101
ctx = context.WithValue(ctx, c.FiltersCtxKey, filters)
97102
next.ServeHTTP(w, r.WithContext(ctx))
98-
99103
} else {
100104
next.ServeHTTP(w, r)
101105
}
@@ -108,8 +112,7 @@ func GetFiltersFromContext(r *http.Request) []model.Filter {
108112
filters, ok := r.Context().Value(c.FiltersCtxKey).([]model.Filter)
109113
if !ok {
110114
// the assertion failed
111-
var emptyFilters []model.Filter
112-
return emptyFilters
115+
return nil
113116
}
114117
return filters
115118
}

backend/internal/api/router.go

Lines changed: 44 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,14 @@ import (
88
"npm/internal/api/middleware"
99
"npm/internal/api/schema"
1010
"npm/internal/config"
11+
"npm/internal/entity/accesslist"
12+
"npm/internal/entity/certificate"
13+
"npm/internal/entity/certificateauthority"
14+
"npm/internal/entity/dnsprovider"
15+
"npm/internal/entity/host"
16+
"npm/internal/entity/nginxtemplate"
17+
"npm/internal/entity/stream"
18+
"npm/internal/entity/upstream"
1119
"npm/internal/entity/user"
1220
"npm/internal/logger"
1321
"npm/internal/serverevents"
@@ -93,9 +101,10 @@ func applyRoutes(r chi.Router) chi.Router {
93101

94102
r.With(middleware.Enforce(user.CapabilityUsersManage)).Route("/", func(r chi.Router) {
95103
// List
96-
// r.With(middleware.Enforce(user.CapabilityUsersManage), middleware.Filters(user.GetFilterSchema())).
97-
r.With(middleware.Enforce(user.CapabilityUsersManage)).
98-
Get("/", handler.GetUsers())
104+
r.With(
105+
middleware.Enforce(user.CapabilityUsersManage),
106+
middleware.Filters(user.Model{}),
107+
).Get("/", handler.GetUsers())
99108

100109
// Specific Item
101110
r.Get("/{userID:[0-9]+}", handler.GetUser())
@@ -136,9 +145,10 @@ func applyRoutes(r chi.Router) chi.Router {
136145
// Access Lists
137146
r.With(middleware.EnforceSetup(true)).Route("/access-lists", func(r chi.Router) {
138147
// List
139-
// r.With(middleware.Filters(accesslist.GetFilterSchema()), middleware.Enforce(user.CapabilityAccessListsView)).
140-
r.With(middleware.Enforce(user.CapabilityAccessListsView)).
141-
Get("/", handler.GetAccessLists())
148+
r.With(
149+
middleware.Enforce(user.CapabilityAccessListsView),
150+
middleware.Filters(accesslist.Model{}),
151+
).Get("/", handler.GetAccessLists())
142152

143153
// Create
144154
r.With(middleware.Enforce(user.CapabilityAccessListsManage), middleware.EnforceRequestSchema(schema.CreateAccessList())).
@@ -159,9 +169,10 @@ func applyRoutes(r chi.Router) chi.Router {
159169
// DNS Providers
160170
r.With(middleware.EnforceSetup(true)).Route("/dns-providers", func(r chi.Router) {
161171
// List
162-
// r.With(middleware.Enforce(user.CapabilityDNSProvidersView), middleware.Filters(dnsprovider.GetFilterSchema())).
163-
r.With(middleware.Enforce(user.CapabilityDNSProvidersView)).
164-
Get("/", handler.GetDNSProviders())
172+
r.With(
173+
middleware.Enforce(user.CapabilityDNSProvidersView),
174+
middleware.Filters(dnsprovider.Model{}),
175+
).Get("/", handler.GetDNSProviders())
165176

166177
// Create
167178
r.With(middleware.Enforce(user.CapabilityDNSProvidersManage), middleware.EnforceRequestSchema(schema.CreateDNSProvider())).
@@ -188,9 +199,10 @@ func applyRoutes(r chi.Router) chi.Router {
188199
// Certificate Authorities
189200
r.With(middleware.EnforceSetup(true)).Route("/certificate-authorities", func(r chi.Router) {
190201
// List
191-
// r.With(middleware.Enforce(user.CapabilityCertificateAuthoritiesView), middleware.Filters(certificateauthority.GetFilterSchema())).
192-
r.With(middleware.Enforce(user.CapabilityCertificateAuthoritiesView)).
193-
Get("/", handler.GetCertificateAuthorities())
202+
r.With(
203+
middleware.Enforce(user.CapabilityCertificateAuthoritiesView),
204+
middleware.Filters(certificateauthority.Model{}),
205+
).Get("/", handler.GetCertificateAuthorities())
194206

195207
// Create
196208
r.With(middleware.Enforce(user.CapabilityCertificateAuthoritiesManage), middleware.EnforceRequestSchema(schema.CreateCertificateAuthority())).
@@ -217,9 +229,10 @@ func applyRoutes(r chi.Router) chi.Router {
217229
// Certificates
218230
r.With(middleware.EnforceSetup(true)).Route("/certificates", func(r chi.Router) {
219231
// List
220-
// r.With(middleware.Enforce(user.CapabilityCertificatesView), middleware.Filters(certificate.GetFilterSchema())).
221-
r.With(middleware.Enforce(user.CapabilityCertificatesView)).
222-
Get("/", handler.GetCertificates())
232+
r.With(
233+
middleware.Enforce(user.CapabilityCertificatesView),
234+
middleware.Filters(certificate.Model{}),
235+
).Get("/", handler.GetCertificates())
223236

224237
// Create
225238
r.With(middleware.Enforce(user.CapabilityCertificatesManage), middleware.EnforceRequestSchema(schema.CreateCertificate())).
@@ -243,9 +256,10 @@ func applyRoutes(r chi.Router) chi.Router {
243256
// Hosts
244257
r.With(middleware.EnforceSetup(true)).Route("/hosts", func(r chi.Router) {
245258
// List
246-
// r.With(middleware.Enforce(user.CapabilityHostsView), middleware.Filters(host.GetFilterSchema())).
247-
r.With(middleware.Enforce(user.CapabilityHostsView)).
248-
Get("/", handler.GetHosts())
259+
r.With(
260+
middleware.Enforce(user.CapabilityHostsView),
261+
middleware.Filters(host.Model{}),
262+
).Get("/", handler.GetHosts())
249263

250264
// Create
251265
r.With(middleware.Enforce(user.CapabilityHostsManage), middleware.EnforceRequestSchema(schema.CreateHost())).
@@ -268,9 +282,10 @@ func applyRoutes(r chi.Router) chi.Router {
268282
// Nginx Templates
269283
r.With(middleware.EnforceSetup(true)).Route("/nginx-templates", func(r chi.Router) {
270284
// List
271-
// r.With(middleware.Enforce(user.CapabilityNginxTemplatesView), middleware.Filters(nginxtemplate.GetFilterSchema())).
272-
r.With(middleware.Enforce(user.CapabilityNginxTemplatesView)).
273-
Get("/", handler.GetNginxTemplates())
285+
r.With(
286+
middleware.Enforce(user.CapabilityNginxTemplatesView),
287+
middleware.Filters(nginxtemplate.Model{}),
288+
).Get("/", handler.GetNginxTemplates())
274289

275290
// Create
276291
r.With(middleware.Enforce(user.CapabilityNginxTemplatesManage), middleware.EnforceRequestSchema(schema.CreateNginxTemplate())).
@@ -291,9 +306,10 @@ func applyRoutes(r chi.Router) chi.Router {
291306
// Streams
292307
r.With(middleware.EnforceSetup(true)).Route("/streams", func(r chi.Router) {
293308
// List
294-
// r.With(middleware.Enforce(user.CapabilityStreamsView), middleware.Filters(stream.GetFilterSchema())).
295-
r.With(middleware.Enforce(user.CapabilityStreamsView)).
296-
Get("/", handler.GetStreams())
309+
r.With(
310+
middleware.Enforce(user.CapabilityStreamsView),
311+
middleware.Filters(stream.Model{}),
312+
).Get("/", handler.GetStreams())
297313

298314
// Create
299315
r.With(middleware.Enforce(user.CapabilityStreamsManage), middleware.EnforceRequestSchema(schema.CreateStream())).
@@ -314,9 +330,10 @@ func applyRoutes(r chi.Router) chi.Router {
314330
// Upstreams
315331
r.With(middleware.EnforceSetup(true)).Route("/upstreams", func(r chi.Router) {
316332
// List
317-
// r.With(middleware.Enforce(user.CapabilityHostsView), middleware.Filters(upstream.GetFilterSchema())).
318-
r.With(middleware.Enforce(user.CapabilityHostsView)).
319-
Get("/", handler.GetUpstreams())
333+
r.With(
334+
middleware.Enforce(user.CapabilityHostsView),
335+
middleware.Filters(upstream.Model{}),
336+
).Get("/", handler.GetUpstreams())
320337

321338
// Create
322339
r.With(middleware.Enforce(user.CapabilityHostsManage), middleware.EnforceRequestSchema(schema.CreateUpstream())).

backend/internal/entity/accesslist/methods.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func List(pageInfo model.PageInfo, filters []model.Filter) (entity.ListResponse,
2121
Direction: "ASC",
2222
}
2323

24-
dbo := entity.ListQueryBuilder(&pageInfo, defaultSort, filters)
24+
dbo := entity.ListQueryBuilder(&pageInfo, defaultSort, filters, entity.GetFilterMap(Model{}, true))
2525

2626
// Get count of items in this search
2727
var totalRows int64

backend/internal/entity/certificate/methods.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func List(pageInfo model.PageInfo, filters []model.Filter, expand []string) (ent
3737
Direction: "ASC",
3838
}
3939

40-
dbo := entity.ListQueryBuilder(&pageInfo, defaultSort, filters)
40+
dbo := entity.ListQueryBuilder(&pageInfo, defaultSort, filters, entity.GetFilterMap(Model{}, true))
4141

4242
// Get count of items in this search
4343
var totalRows int64

backend/internal/entity/certificateauthority/methods.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func List(pageInfo model.PageInfo, filters []model.Filter) (entity.ListResponse,
2121
Direction: "ASC",
2222
}
2323

24-
dbo := entity.ListQueryBuilder(&pageInfo, defaultSort, filters)
24+
dbo := entity.ListQueryBuilder(&pageInfo, defaultSort, filters, entity.GetFilterMap(Model{}, true))
2525

2626
// Get count of items in this search
2727
var totalRows int64

backend/internal/entity/dnsprovider/methods.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func List(pageInfo model.PageInfo, filters []model.Filter) (entity.ListResponse,
2121
Direction: "ASC",
2222
}
2323

24-
dbo := entity.ListQueryBuilder(&pageInfo, defaultSort, filters)
24+
dbo := entity.ListQueryBuilder(&pageInfo, defaultSort, filters, entity.GetFilterMap(Model{}, true))
2525

2626
// Get count of items in this search
2727
var totalRows int64

0 commit comments

Comments
 (0)