_validateCommitment fails for approved operators
If a collateral token owner approves another user as an operator for all their tokens (rather than just for a given token), the validation check in `_validateCommitment()` will fail.\\nThe collateral token is implemented as an ERC721, which has two ways to approve another user:\\nApprove them to take actions with a given token (approve())\\nApprove them as an "operator" for all your owned tokens (setApprovalForAll())\\nHowever, when the `_validateCommitment()` function checks that the token is owned or approved by `msg.sender`, it does not accept those who are set as operators.\\n```\\nif (msg.sender != holder) {\\n  require(msg.sender == operator, "invalid request");\\n}\\n```\\n
Include an additional check to confirm whether the `msg.sender` is approved as an operator on the token:\\n```\\n    address holder = ERC721(COLLATERAL_TOKEN()).ownerOf(collateralId);\\n    address approved = ERC721(COLLATERAL_TOKEN()).getApproved(collateralId);\\n    address operator = ERC721(COLLATERAL_TOKEN()).isApprovedForAll(holder);\\n\\n    if (msg.sender != holder) {\\n      require(msg.sender == operator || msg.sender == approved, "invalid request");\\n    }\\n```\\n
Approved operators of collateral tokens will be rejected from taking actions with those tokens.
```\\nif (msg.sender != holder) {\\n  require(msg.sender == operator, "invalid request");\\n}\\n```\\n