diff --git a/programs/conditional_vault/src/instructions/merge_tokens.rs b/programs/conditional_vault/src/instructions/merge_tokens.rs index 6a9ff848..54a514e6 100644 --- a/programs/conditional_vault/src/instructions/merge_tokens.rs +++ b/programs/conditional_vault/src/instructions/merge_tokens.rs @@ -1,6 +1,15 @@ use super::*; impl<'info, 'c: 'info> InteractWithVault<'info> { + pub fn validate_merge_tokens(&self) -> Result<()> { + require!( + !self.question.is_resolved(), + VaultError::QuestionAlreadyResolved + ); + + Ok(()) + } + pub fn handle_merge_tokens(ctx: Context<'_, '_, 'c, 'info, Self>, amount: u64) -> Result<()> { let accs = &ctx.accounts; diff --git a/programs/conditional_vault/src/instructions/split_tokens.rs b/programs/conditional_vault/src/instructions/split_tokens.rs index 4213d88f..e8937774 100644 --- a/programs/conditional_vault/src/instructions/split_tokens.rs +++ b/programs/conditional_vault/src/instructions/split_tokens.rs @@ -1,6 +1,15 @@ use super::*; impl<'info, 'c: 'info> InteractWithVault<'info> { + pub fn validate_split_tokens(&self) -> Result<()> { + require!( + !self.question.is_resolved(), + VaultError::QuestionAlreadyResolved + ); + + Ok(()) + } + pub fn handle_split_tokens(ctx: Context<'_, '_, 'c, 'info, Self>, amount: u64) -> Result<()> { let accs = &ctx.accounts; diff --git a/programs/conditional_vault/src/lib.rs b/programs/conditional_vault/src/lib.rs index 4568f3e7..9dfa1400 100644 --- a/programs/conditional_vault/src/lib.rs +++ b/programs/conditional_vault/src/lib.rs @@ -59,6 +59,7 @@ pub mod conditional_vault { InitializeConditionalVault::handle(ctx) } + #[access_control(ctx.accounts.validate_split_tokens())] pub fn split_tokens<'c: 'info, 'info>( ctx: Context<'_, '_, 'c, 'info, InteractWithVault<'info>>, amount: u64, @@ -66,6 +67,7 @@ pub mod conditional_vault { InteractWithVault::handle_split_tokens(ctx, amount) } + #[access_control(ctx.accounts.validate_merge_tokens())] pub fn merge_tokens<'c: 'info, 'info>( ctx: Context<'_, '_, 'c, 'info, InteractWithVault<'info>>, amount: u64,