Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 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
4 changes: 2 additions & 2 deletions pkg/request/authorize.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ type (
// If the access is not allowed, a PermissionDenied Error is returned with a proper error message.
// req is only fully populated after a interceptor call.
Authorize(ctx context.Context, token *apiv2.Token, req connect.AnyRequest) error
// TokenMethods returns a slice of allowed methods based on the given token
TokenMethods(ctx context.Context, token *apiv2.Token) ([]string, error)
// TokenPermissions returns the permissions based on the given token
TokenPermissions(ctx context.Context, token *apiv2.Token) (tokenPermissions, error)
}
)

Expand Down
13 changes: 2 additions & 11 deletions pkg/request/tokenpermissions.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,17 +26,8 @@ type (

const anySubject = "*"

func (a *authorizer) TokenMethods(ctx context.Context, token *apiv2.Token) ([]string, error) {
tp, err := a.getTokenPermissions(ctx, token)
if err != nil {
return nil, err
}
var methods []string
for method := range tp {
methods = append(methods, method)
}
slices.Sort(methods)
return methods, nil
func (a *authorizer) TokenPermissions(ctx context.Context, token *apiv2.Token) (tokenPermissions, error) {
return a.getTokenPermissions(ctx, token)
}

func (a *authorizer) getTokenPermissions(ctx context.Context, token *apiv2.Token) (tokenPermissions, error) {
Expand Down
9 changes: 8 additions & 1 deletion pkg/service/method/method-service.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package method
import (
"context"
"log/slog"
"slices"
"time"

apiv2 "github.com/metal-stack/api/go/metalstack/api/v2"
Expand Down Expand Up @@ -46,11 +47,17 @@ func New(log *slog.Logger, repo *repository.Store) apiv2connect.MethodServiceHan
func (m *methodServiceServer) List(ctx context.Context, _ *apiv2.MethodServiceListRequest) (*apiv2.MethodServiceListResponse, error) {
token, _ := token.TokenFromContext(ctx)

methods, err := m.authorizer.TokenMethods(ctx, token)
permissions, err := m.authorizer.TokenPermissions(ctx, token)
if err != nil {
return nil, err
}

var methods []string
for method := range permissions {
methods = append(methods, method)
}
slices.Sort(methods)

return &apiv2.MethodServiceListResponse{
Methods: methods,
}, nil
Expand Down
Loading