Skip to content

Commit

Permalink
fix: validate node for plan in before session creation in subscriptio…
Browse files Browse the repository at this point in the history
…n module
  • Loading branch information
ironman0x7b2 committed Jan 9, 2025
1 parent fe6ad6d commit f0fbb41
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 6 deletions.
1 change: 1 addition & 0 deletions x/subscription/expected/keeper.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ type ProviderKeeper interface {
}

type NodeKeeper interface {
HasNodeForPlan(ctx sdk.Context, id uint64, addr base.NodeAddress) bool
GetNode(ctx sdk.Context, addr base.NodeAddress) (nodetypes.Node, bool)
}

Expand Down
4 changes: 4 additions & 0 deletions x/subscription/keeper/alias.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ func (k *Keeper) GetNode(ctx sdk.Context, addr base.NodeAddress) (nodetypes.Node
return k.node.GetNode(ctx, addr)
}

func (k *Keeper) HasNodeForPlan(ctx sdk.Context, id uint64, addr base.NodeAddress) bool {
return k.node.HasNodeForPlan(ctx, id, addr)
}

func (k *Keeper) QuotePriceFunc(ctx sdk.Context, price sdk.DecCoin) (sdk.Coin, error) {
return k.oracle.GetQuotePrice(ctx, price)
}
Expand Down
4 changes: 4 additions & 0 deletions x/subscription/keeper/msg_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -401,6 +401,10 @@ func (k *Keeper) HandleMsgStartSession(ctx sdk.Context, msg *v3.MsgStartSessionR
return nil, types.NewErrorInvalidNodeStatus(nodeAddr, node.Status)
}

if !k.HasNodeForPlan(ctx, subscription.PlanID, nodeAddr) {
return nil, types.NewErrorNodeForPlanNotFound(subscription.PlanID, nodeAddr)
}

accAddr, err := sdk.AccAddressFromBech32(msg.From)
if err != nil {
return nil, err
Expand Down
18 changes: 12 additions & 6 deletions x/subscription/types/errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,13 @@ var (
ErrInvalidRenewalPolicy = sdkerrors.Register(ModuleName, 206, "invalid renewal policy")
ErrInvalidSessionStatus = sdkerrors.Register(ModuleName, 207, "invalid session status")
ErrInvalidSubscriptionStatus = sdkerrors.Register(ModuleName, 208, "invalid subscription status")
ErrNodeNotFound = sdkerrors.Register(ModuleName, 209, "node not found")
ErrPlanNotFound = sdkerrors.Register(ModuleName, 210, "plan not found")
ErrPriceNotFound = sdkerrors.Register(ModuleName, 211, "price not found")
ErrSessionNotFound = sdkerrors.Register(ModuleName, 212, "session not found")
ErrSubscriptionNotFound = sdkerrors.Register(ModuleName, 213, "subscription not found")
ErrUnauthorized = sdkerrors.Register(ModuleName, 214, "unauthorized")
ErrNodeForPlanNotFound = sdkerrors.Register(ModuleName, 209, "node for plan not found")
ErrNodeNotFound = sdkerrors.Register(ModuleName, 210, "node not found")
ErrPlanNotFound = sdkerrors.Register(ModuleName, 211, "plan not found")
ErrPriceNotFound = sdkerrors.Register(ModuleName, 212, "price not found")
ErrSessionNotFound = sdkerrors.Register(ModuleName, 213, "session not found")
ErrSubscriptionNotFound = sdkerrors.Register(ModuleName, 214, "subscription not found")
ErrUnauthorized = sdkerrors.Register(ModuleName, 215, "unauthorized")
)

// NewErrorAllocationNotFound returns an error indicating that the specified allocation does not exist.
Expand Down Expand Up @@ -63,6 +64,11 @@ func NewErrorInvalidSubscriptionStatus(id uint64, status v1base.Status) error {
return sdkerrors.Wrapf(ErrInvalidSubscriptionStatus, "invalid status %s for subscription %d", status, id)
}

// NewErrorNodeForPlanNotFound returns an error indicating that the specified node does not exist for the plan.
func NewErrorNodeForPlanNotFound(id uint64, addr base.NodeAddress) error {
return sdkerrors.Wrapf(ErrNodeForPlanNotFound, "node %s for plan %d does not exist", addr, id)
}

// NewErrorNodeNotFound returns an error indicating that the specified node does not exist.
func NewErrorNodeNotFound(addr base.NodeAddress) error {
return sdkerrors.Wrapf(ErrNodeNotFound, "node %s does not exist", addr)
Expand Down

0 comments on commit f0fbb41

Please sign in to comment.