Skip to content

Commit

Permalink
core: add approval logic to lsp8 compatible init
Browse files Browse the repository at this point in the history
  • Loading branch information
skimaharvey committed Aug 15, 2023
1 parent 0159bed commit f0372f8
Showing 1 changed file with 21 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,27 @@ abstract contract LSP8CompatibleERC721InitAbstract is
LSP8IdentifiableDigitalAssetCore
)
{
super.authorizeOperator(operator, tokenId);
address tokenOwner = tokenOwnerOf(tokenId);

if (
tokenOwner != msg.sender &&
!isApprovedForAll(tokenOwner, msg.sender)
) {
revert LSP8NotTokenOwner(tokenOwner, tokenId, msg.sender);
}

if (operator == address(0)) {
revert LSP8CannotUseAddressZeroAsOperator();
}

if (tokenOwner == operator) {
revert LSP8TokenOwnerCannotBeOperator();
}

bool isAdded = _operators[tokenId].add(operator);
if (!isAdded) revert LSP8OperatorAlreadyAuthorized(operator, tokenId);

emit AuthorizedOperator(operator, tokenOwner, tokenId);
emit Approval(tokenOwnerOf(tokenId), operator, uint256(tokenId));
}

Expand Down

0 comments on commit f0372f8

Please sign in to comment.