disallowing the executor to sign the transaction with the expiryEpoch will may allow or prevent the transaction to be executed in a wrong time for the executor, who is the responsible for performing the strategies, and  will hamper the automation process
Audit: 2023-10-brahma-findings
Severity: HIGH

# Lines of code

https://github.com/code-423n4/2023-10-brahma/blob/dd0b41031b199a0aa214e50758943712f9f574a0/contracts/src/core/ExecutorPlugin.sol#L122-L133


# Vulnerability details

## Impact
preventing the executor from setting an ExpiryEpoch to the transaction to be executed within it , will lead to hamper the automation process and may allow the transactions to be executed in improper time in which the strategy became invalid which may cause loss of funds of the owners and the sub account . 
## Proof of Concept
in the contract `executorPlugin` the signature validation process of the executor signature does not include the ExpiryEpoch or the deadline for the transaction , as shown here :
https://github.com/code-423n4/2023-10-brahma/blob/dd0b41031b199a0aa214e50758943712f9f574a0/contracts/src/core/ExecutorPlugin.sol#L122-L133
```solidity 
        // Build transaction struct hash
        bytes32 _transactionStructHash = TypeHashHelper._buildTransactionStructHash(
            TypeHashHelper.Transaction({
                to: execRequest.exec.target,
                value: execRequest.exec.value,
                data: execRequest.exec.data,
                operation: uint8(SafeHelper._parseOperationEnum(execRequest.exec.callType)),
                account: execRequest.account,
                executor: execRequest.executor,
                nonce: executorNonce[execRequest.account][execRequest.executor]++
            })
        );
```
this means that the transaction can be executed in anytime within the expiryEpoch of the `trustedValidator` , which may cause a loss of funds due to price volatility or the strategy become invalid to be performed and although that the transaction was executed . 

so because the `executor` is the responsible for the defi interactions and the automation process , the executor should set the expiry epoch to the transaction to be executed in a proper time from the prospective of the `executor` . 

## POC 
assume that the `trustedValidator`s ExpiryEpoch is 60 minutes , and the `executor` needs the transaction to be executed within 2 minutes to perform a certain strategy  , and for any reason the transaction got executed after 10 minutes , the transaction will not revert and the signature of the executor will be still valid but the strategy will not be performed as intended and this will cause loss of funds of the sub account , and the owners of the console account .  
## Tools Used
manual review 
## Recommended Mitigation Steps
allow the executor to sign a `deadline` (`ExpiryEpoch`) with the transaction and then verify this `deadline` before execution to make sure that transaction is still valid from the point of view of the `executor` . 
```solidity 
 bytes32 _transactionStructHash = TypeHashHelper._buildTransactionStructHash(
            TypeHashHelper.Transaction({
                to: execRequest.exec.target,
                value: execRequest.exec.value,
                data: execRequest.exec.data,
                operat