Skip to content

Commit da2dbc6

Browse files
authored
Update owner checks to use metadata rather than just state (#156)
1 parent e521124 commit da2dbc6

2 files changed

Lines changed: 15 additions & 8 deletions

File tree

ocp/rpc/currency/launch.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,12 +90,14 @@ func (s *currencyServer) Launch(ctx context.Context, req *currencypb.LaunchReque
9090
}
9191
}
9292

93-
ownerManagementState, err := common.GetOwnerManagementState(ctx, s.data, ownerAccount)
94-
if err != nil {
95-
log.With(zap.Error(err)).Warn("failure getting owner management state")
93+
ownerMetadata, err := common.GetOwnerMetadata(ctx, s.data, ownerAccount)
94+
if err == common.ErrOwnerNotFound {
95+
return &currencypb.LaunchResponse{Result: currencypb.LaunchResponse_DENIED}, nil
96+
} else if err != nil {
97+
log.With(zap.Error(err)).Warn("failure getting owner metadata")
9698
return &currencypb.LaunchResponse{Result: currencypb.LaunchResponse_DENIED}, nil
9799
}
98-
if ownerManagementState != common.OwnerManagementStateOcpAccount {
100+
if ownerMetadata.Type != common.OwnerTypeUser12Words || ownerMetadata.State != common.OwnerManagementStateOcpAccount {
99101
return &currencypb.LaunchResponse{Result: currencypb.LaunchResponse_DENIED}, nil
100102
}
101103

ocp/rpc/transaction/swap.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,14 +104,19 @@ func (s *transactionServer) StatefulSwap(streamer transactionpb.Transaction_Stat
104104
// Section: Antispam
105105
//
106106

107-
ownerManagemntState, err := common.GetOwnerManagementState(ctx, s.data, owner)
108-
if err != nil {
109-
log.With(zap.Error(err)).Warn("failure getting owner management state")
107+
ownerMetadata, err := common.GetOwnerMetadata(ctx, s.data, owner)
108+
if err == common.ErrOwnerNotFound {
109+
return handleStatefulSwapError(streamer, NewSwapDeniedError("not an ocp account"))
110+
} else if err != nil {
111+
log.With(zap.Error(err)).Warn("failure getting owner metadata")
110112
return handleStatefulSwapError(streamer, err)
111113
}
112-
if ownerManagemntState != common.OwnerManagementStateOcpAccount {
114+
if ownerMetadata.State != common.OwnerManagementStateOcpAccount {
113115
return handleStatefulSwapError(streamer, NewSwapDeniedError("not an ocp account"))
114116
}
117+
if ownerMetadata.Type != common.OwnerTypeUser12Words {
118+
return handleStatefulSwapError(streamer, NewSwapDeniedError("not a user ocp account"))
119+
}
115120

116121
allow, err := s.antispamGuard.AllowSwap(ctx, swap.FundingSource(initiateCurrencyCreatorSwapReq.FundingSource), owner, fromMint, toMint)
117122
if err != nil {

0 commit comments

Comments
 (0)