package metadata import ( "forge.cadoles.com/arcad/edge/pkg/app" "github.com/pkg/errors" ) func WithMinimumRoleValidator(roles ...string) app.MetadataValidator { return func(metadata map[string]any) (bool, error) { rawMinimumRole, exists := metadata["minimumRole"] if !exists { return true, nil } minimumRole, ok := rawMinimumRole.(string) if !ok { return false, errors.Errorf("metadata['minimumRole']: unexpected value type '%T'", rawMinimumRole) } for _, r := range roles { if minimumRole == r { return true, nil } } return false, errors.Errorf("metadata['minimumRole']: unexpected role '%s'", minimumRole) } }