diff --git a/pkg/resources/schema.go b/pkg/resources/schema.go index 40fbdf4..61a08ce 100644 --- a/pkg/resources/schema.go +++ b/pkg/resources/schema.go @@ -19,13 +19,23 @@ import ( steveschema "github.com/rancher/steve/pkg/schema" "github.com/rancher/steve/pkg/stores/proxy" "github.com/rancher/steve/pkg/summarycache" + "k8s.io/apiserver/pkg/endpoints/request" "k8s.io/client-go/discovery" ) func DefaultSchemas(ctx context.Context, baseSchema *types.APISchemas, ccache clustercache.ClusterCache, cg proxy.ClientGetter, schemaFactory steveschema.Factory) error { counts.Register(baseSchema, ccache) - subscribe.Register(baseSchema) + subscribe.Register(baseSchema, func(apiOp *types.APIRequest) *types.APISchemas { + user, ok := request.UserFrom(apiOp.Context()) + if ok { + schemas, err := schemaFactory.Schemas(user) + if err == nil { + return schemas + } + } + return apiOp.Schemas + }) apiroot.Register(baseSchema, []string{"v1"}, "proxy:/apis") cluster.Register(ctx, baseSchema, cg, schemaFactory) userpreferences.Register(baseSchema)