Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion api/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -1342,6 +1342,15 @@ func (c *Client) GetAccessCapabilities(ctx context.Context, req types.AccessCapa
return caps, nil
}

// GetRemoteAccessCapabilities requests the access capabilities of a user.
func (c *Client) GetRemoteAccessCapabilities(ctx context.Context, req types.RemoteAccessCapabilitiesRequest) (*types.RemoteAccessCapabilities, error) {
caps, err := c.grpc.GetRemoteAccessCapabilities(ctx, &req)
if err != nil {
return nil, trace.Wrap(err)
}
return caps, nil
}

// GetPluginData loads all plugin data matching the supplied filter.
func (c *Client) GetPluginData(ctx context.Context, filter types.PluginDataFilter) ([]types.PluginData, error) {
seq, err := c.grpc.GetPluginData(ctx, &filter)
Expand Down Expand Up @@ -4392,7 +4401,7 @@ func GetResourcePage[T types.ResourceWithLabels](ctx context.Context, clt GetRes
resource = respResource.GetSAMLIdPServiceProvider()
default:
out.Resources = nil
return out, trace.NotImplemented("resource type %s does not support pagination", req.ResourceType)
return out, trace.NotImplemented("resource type %q does not support pagination", req.ResourceType)
}

t, ok := resource.(T)
Expand Down
1,998 changes: 999 additions & 999 deletions api/client/proto/authservice.pb.go

Large diffs are not rendered by default.

40 changes: 40 additions & 0 deletions api/client/proto/authservice_grpc.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions api/proto/teleport/legacy/client/proto/authservice.proto
Original file line number Diff line number Diff line change
Expand Up @@ -3074,6 +3074,8 @@ service AuthService {
rpc SubmitAccessReview(types.AccessReviewSubmission) returns (types.AccessRequestV3);
// GetAccessCapabilities requests the access capabilities of a user.
rpc GetAccessCapabilities(types.AccessCapabilitiesRequest) returns (types.AccessCapabilities);
// GetRemoteAccessCapabilities requests the access capabilities for a user from a remote cluster
rpc GetRemoteAccessCapabilities(types.RemoteAccessCapabilitiesRequest) returns (types.RemoteAccessCapabilities);

// GetAccessRequestAllowedPromotions returns a list of allowed promotions from an access request to an access list.
rpc GetAccessRequestAllowedPromotions(AccessRequestAllowedPromotionRequest) returns (AccessRequestAllowedPromotionResponse);
Expand Down
28 changes: 28 additions & 0 deletions api/proto/teleport/legacy/types/types.proto
Original file line number Diff line number Diff line change
Expand Up @@ -3146,6 +3146,34 @@ message AccessCapabilitiesRequest {
bool FilterRequestableRolesByResource = 6 [(gogoproto.jsontag) = "filter_requestable_roles_by_resource,omitempty"];
}

// RemoteAccessCapabilities is a summary of the capabilites that a remote cluster
// user is granted in target cluster.
// buf:lint:ignore PAGINATION_REQUIRED
message RemoteAccessCapabilities {
// ApplicableRolesForResources is a list of the remote-cluster roles applicable
// for access to a given set of resources. This will always be a subset of the
// SearchAsRoles supplied in the [RemoteAccessCapabilitiesRequest]
repeated string ApplicableRolesForResources = 1 [(gogoproto.jsontag) = "applicable_roles,omitempty"];
}

// AccessCapabilitiesRequest encodes parameters for the GetRemoteAccessCapabilities method.
// buf:lint:ignore PAGINATION_REQUIRED
message RemoteAccessCapabilitiesRequest {
// user is the name of the target user on their home cluster
string User = 1 [(gogoproto.jsontag) = "user,omitempty"];

// SearchAsRoles holds the roles the target user may use when searching for
// resources on the user's home cluster
repeated string SearchAsRoles = 2 [(gogoproto.jsontag) = "remote_search_as_roles,omitempty"];

// ResourceIDs is the list of the ResourceIDs of the resources we would like to view
// the necessary roles for.
repeated ResourceID ResourceIDs = 3 [
(gogoproto.jsontag) = "resource_ids,omitempty",
(gogoproto.nullable) = false
];
}

// RequestKubernetesResource is the Kubernetes resource identifier used
// in access request settings.
// Modeled after existing message KubernetesResource.
Expand Down
Loading
Loading