mirror of
https://github.com/NginxProxyManager/nginx-proxy-manager.git
synced 2025-06-18 10:06:26 +00:00
Add entity filters back in for api
This commit is contained in:
@ -5,12 +5,13 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
c "npm/internal/api/context"
|
||||
h "npm/internal/api/http"
|
||||
"npm/internal/entity"
|
||||
"npm/internal/model"
|
||||
"npm/internal/util"
|
||||
"strings"
|
||||
|
||||
"github.com/qri-io/jsonschema"
|
||||
)
|
||||
@ -19,7 +20,9 @@ import (
|
||||
// passed in to this endpoint. This will ensure that the filters are not injecting SQL.
|
||||
// After we have determined what the Filters are to be, they are saved on the Context
|
||||
// to be used later in other endpoints.
|
||||
func Filters(schemaData string) func(http.Handler) http.Handler {
|
||||
func Filters(obj interface{}) func(http.Handler) http.Handler {
|
||||
schemaData := entity.GetFilterSchema(obj, true)
|
||||
|
||||
reservedFilterKeys := []string{
|
||||
"limit",
|
||||
"offset",
|
||||
@ -93,9 +96,10 @@ func Filters(schemaData string) func(http.Handler) http.Handler {
|
||||
return
|
||||
}
|
||||
|
||||
// todo: populate filters object with the gorm database name
|
||||
|
||||
ctx = context.WithValue(ctx, c.FiltersCtxKey, filters)
|
||||
next.ServeHTTP(w, r.WithContext(ctx))
|
||||
|
||||
} else {
|
||||
next.ServeHTTP(w, r)
|
||||
}
|
||||
@ -108,8 +112,7 @@ func GetFiltersFromContext(r *http.Request) []model.Filter {
|
||||
filters, ok := r.Context().Value(c.FiltersCtxKey).([]model.Filter)
|
||||
if !ok {
|
||||
// the assertion failed
|
||||
var emptyFilters []model.Filter
|
||||
return emptyFilters
|
||||
return nil
|
||||
}
|
||||
return filters
|
||||
}
|
||||
|
@ -8,6 +8,14 @@ import (
|
||||
"npm/internal/api/middleware"
|
||||
"npm/internal/api/schema"
|
||||
"npm/internal/config"
|
||||
"npm/internal/entity/accesslist"
|
||||
"npm/internal/entity/certificate"
|
||||
"npm/internal/entity/certificateauthority"
|
||||
"npm/internal/entity/dnsprovider"
|
||||
"npm/internal/entity/host"
|
||||
"npm/internal/entity/nginxtemplate"
|
||||
"npm/internal/entity/stream"
|
||||
"npm/internal/entity/upstream"
|
||||
"npm/internal/entity/user"
|
||||
"npm/internal/logger"
|
||||
"npm/internal/serverevents"
|
||||
@ -93,9 +101,10 @@ func applyRoutes(r chi.Router) chi.Router {
|
||||
|
||||
r.With(middleware.Enforce(user.CapabilityUsersManage)).Route("/", func(r chi.Router) {
|
||||
// List
|
||||
// r.With(middleware.Enforce(user.CapabilityUsersManage), middleware.Filters(user.GetFilterSchema())).
|
||||
r.With(middleware.Enforce(user.CapabilityUsersManage)).
|
||||
Get("/", handler.GetUsers())
|
||||
r.With(
|
||||
middleware.Enforce(user.CapabilityUsersManage),
|
||||
middleware.Filters(user.Model{}),
|
||||
).Get("/", handler.GetUsers())
|
||||
|
||||
// Specific Item
|
||||
r.Get("/{userID:[0-9]+}", handler.GetUser())
|
||||
@ -136,9 +145,10 @@ func applyRoutes(r chi.Router) chi.Router {
|
||||
// Access Lists
|
||||
r.With(middleware.EnforceSetup(true)).Route("/access-lists", func(r chi.Router) {
|
||||
// List
|
||||
// r.With(middleware.Filters(accesslist.GetFilterSchema()), middleware.Enforce(user.CapabilityAccessListsView)).
|
||||
r.With(middleware.Enforce(user.CapabilityAccessListsView)).
|
||||
Get("/", handler.GetAccessLists())
|
||||
r.With(
|
||||
middleware.Enforce(user.CapabilityAccessListsView),
|
||||
middleware.Filters(accesslist.Model{}),
|
||||
).Get("/", handler.GetAccessLists())
|
||||
|
||||
// Create
|
||||
r.With(middleware.Enforce(user.CapabilityAccessListsManage), middleware.EnforceRequestSchema(schema.CreateAccessList())).
|
||||
@ -159,9 +169,10 @@ func applyRoutes(r chi.Router) chi.Router {
|
||||
// DNS Providers
|
||||
r.With(middleware.EnforceSetup(true)).Route("/dns-providers", func(r chi.Router) {
|
||||
// List
|
||||
// r.With(middleware.Enforce(user.CapabilityDNSProvidersView), middleware.Filters(dnsprovider.GetFilterSchema())).
|
||||
r.With(middleware.Enforce(user.CapabilityDNSProvidersView)).
|
||||
Get("/", handler.GetDNSProviders())
|
||||
r.With(
|
||||
middleware.Enforce(user.CapabilityDNSProvidersView),
|
||||
middleware.Filters(dnsprovider.Model{}),
|
||||
).Get("/", handler.GetDNSProviders())
|
||||
|
||||
// Create
|
||||
r.With(middleware.Enforce(user.CapabilityDNSProvidersManage), middleware.EnforceRequestSchema(schema.CreateDNSProvider())).
|
||||
@ -188,9 +199,10 @@ func applyRoutes(r chi.Router) chi.Router {
|
||||
// Certificate Authorities
|
||||
r.With(middleware.EnforceSetup(true)).Route("/certificate-authorities", func(r chi.Router) {
|
||||
// List
|
||||
// r.With(middleware.Enforce(user.CapabilityCertificateAuthoritiesView), middleware.Filters(certificateauthority.GetFilterSchema())).
|
||||
r.With(middleware.Enforce(user.CapabilityCertificateAuthoritiesView)).
|
||||
Get("/", handler.GetCertificateAuthorities())
|
||||
r.With(
|
||||
middleware.Enforce(user.CapabilityCertificateAuthoritiesView),
|
||||
middleware.Filters(certificateauthority.Model{}),
|
||||
).Get("/", handler.GetCertificateAuthorities())
|
||||
|
||||
// Create
|
||||
r.With(middleware.Enforce(user.CapabilityCertificateAuthoritiesManage), middleware.EnforceRequestSchema(schema.CreateCertificateAuthority())).
|
||||
@ -217,9 +229,10 @@ func applyRoutes(r chi.Router) chi.Router {
|
||||
// Certificates
|
||||
r.With(middleware.EnforceSetup(true)).Route("/certificates", func(r chi.Router) {
|
||||
// List
|
||||
// r.With(middleware.Enforce(user.CapabilityCertificatesView), middleware.Filters(certificate.GetFilterSchema())).
|
||||
r.With(middleware.Enforce(user.CapabilityCertificatesView)).
|
||||
Get("/", handler.GetCertificates())
|
||||
r.With(
|
||||
middleware.Enforce(user.CapabilityCertificatesView),
|
||||
middleware.Filters(certificate.Model{}),
|
||||
).Get("/", handler.GetCertificates())
|
||||
|
||||
// Create
|
||||
r.With(middleware.Enforce(user.CapabilityCertificatesManage), middleware.EnforceRequestSchema(schema.CreateCertificate())).
|
||||
@ -243,9 +256,10 @@ func applyRoutes(r chi.Router) chi.Router {
|
||||
// Hosts
|
||||
r.With(middleware.EnforceSetup(true)).Route("/hosts", func(r chi.Router) {
|
||||
// List
|
||||
// r.With(middleware.Enforce(user.CapabilityHostsView), middleware.Filters(host.GetFilterSchema())).
|
||||
r.With(middleware.Enforce(user.CapabilityHostsView)).
|
||||
Get("/", handler.GetHosts())
|
||||
r.With(
|
||||
middleware.Enforce(user.CapabilityHostsView),
|
||||
middleware.Filters(host.Model{}),
|
||||
).Get("/", handler.GetHosts())
|
||||
|
||||
// Create
|
||||
r.With(middleware.Enforce(user.CapabilityHostsManage), middleware.EnforceRequestSchema(schema.CreateHost())).
|
||||
@ -268,9 +282,10 @@ func applyRoutes(r chi.Router) chi.Router {
|
||||
// Nginx Templates
|
||||
r.With(middleware.EnforceSetup(true)).Route("/nginx-templates", func(r chi.Router) {
|
||||
// List
|
||||
// r.With(middleware.Enforce(user.CapabilityNginxTemplatesView), middleware.Filters(nginxtemplate.GetFilterSchema())).
|
||||
r.With(middleware.Enforce(user.CapabilityNginxTemplatesView)).
|
||||
Get("/", handler.GetNginxTemplates())
|
||||
r.With(
|
||||
middleware.Enforce(user.CapabilityNginxTemplatesView),
|
||||
middleware.Filters(nginxtemplate.Model{}),
|
||||
).Get("/", handler.GetNginxTemplates())
|
||||
|
||||
// Create
|
||||
r.With(middleware.Enforce(user.CapabilityNginxTemplatesManage), middleware.EnforceRequestSchema(schema.CreateNginxTemplate())).
|
||||
@ -291,9 +306,10 @@ func applyRoutes(r chi.Router) chi.Router {
|
||||
// Streams
|
||||
r.With(middleware.EnforceSetup(true)).Route("/streams", func(r chi.Router) {
|
||||
// List
|
||||
// r.With(middleware.Enforce(user.CapabilityStreamsView), middleware.Filters(stream.GetFilterSchema())).
|
||||
r.With(middleware.Enforce(user.CapabilityStreamsView)).
|
||||
Get("/", handler.GetStreams())
|
||||
r.With(
|
||||
middleware.Enforce(user.CapabilityStreamsView),
|
||||
middleware.Filters(stream.Model{}),
|
||||
).Get("/", handler.GetStreams())
|
||||
|
||||
// Create
|
||||
r.With(middleware.Enforce(user.CapabilityStreamsManage), middleware.EnforceRequestSchema(schema.CreateStream())).
|
||||
@ -314,9 +330,10 @@ func applyRoutes(r chi.Router) chi.Router {
|
||||
// Upstreams
|
||||
r.With(middleware.EnforceSetup(true)).Route("/upstreams", func(r chi.Router) {
|
||||
// List
|
||||
// r.With(middleware.Enforce(user.CapabilityHostsView), middleware.Filters(upstream.GetFilterSchema())).
|
||||
r.With(middleware.Enforce(user.CapabilityHostsView)).
|
||||
Get("/", handler.GetUpstreams())
|
||||
r.With(
|
||||
middleware.Enforce(user.CapabilityHostsView),
|
||||
middleware.Filters(upstream.Model{}),
|
||||
).Get("/", handler.GetUpstreams())
|
||||
|
||||
// Create
|
||||
r.With(middleware.Enforce(user.CapabilityHostsManage), middleware.EnforceRequestSchema(schema.CreateUpstream())).
|
||||
|
Reference in New Issue
Block a user