1
0
mirror of https://github.com/oceanprotocol/ocean.js.git synced 2024-11-26 20:39:05 +01:00

add NFT owner check in Datatoken

This commit is contained in:
lacoop6tu 2021-12-17 06:22:46 -05:00
parent e64e0b61b1
commit 39ded52003
2 changed files with 22 additions and 19 deletions

View File

@ -40,7 +40,7 @@ export class Datatoken {
public datatokensEnterpriseAbi: AbiItem | AbiItem[] public datatokensEnterpriseAbi: AbiItem | AbiItem[]
public web3: Web3 public web3: Web3
public startBlock: number public startBlock: number
// public nft: Nft public nft: Nft
/** /**
* Instantiate ERC20 DataTokens * Instantiate ERC20 DataTokens
@ -58,7 +58,7 @@ export class Datatoken {
this.datatokensEnterpriseAbi = this.datatokensEnterpriseAbi =
datatokensEnterpriseAbi || (defaultDatatokensEnterpriseAbi.abi as AbiItem[]) datatokensEnterpriseAbi || (defaultDatatokensEnterpriseAbi.abi as AbiItem[])
this.startBlock = startBlock || 0 this.startBlock = startBlock || 0
// this.nft = new Nft(this.web3) this.nft = new Nft(this.web3)
} }
/** /**
@ -1170,6 +1170,9 @@ export class Datatoken {
dtAddress: string, dtAddress: string,
address: string address: string
): Promise<TransactionReceipt> { ): Promise<TransactionReceipt> {
if(await this.nft.getNftOwner(await this.getNFTAddress(dtAddress)) != address) {
throw new Error('Caller is NOT Nft Owner')
}
const dtContract = new this.web3.eth.Contract(this.datatokensAbi, dtAddress) const dtContract = new this.web3.eth.Contract(this.datatokensAbi, dtAddress)
const estGas = await this.estGasCleanPermissions(dtAddress, address, dtContract) const estGas = await this.estGasCleanPermissions(dtAddress, address, dtContract)

View File

@ -407,29 +407,29 @@ describe('Datatoken', () => {
assert(buyTx !== null) assert(buyTx !== null)
}) })
// it('#cleanPermissions - should FAIL to clean permissions at ERC20 level, if NOT NFT Owner', async () => { it('#cleanPermissions - should FAIL to clean permissions at ERC20 level, if NOT NFT Owner', async () => {
// assert((await datatoken.getDTPermissions(datatokenAddress, nftOwner)).minter === true) assert((await datatoken.getDTPermissions(datatokenAddress, nftOwner)).minter === true)
// assert((await datatoken.getPaymentCollector(datatokenAddress)) === user3) assert((await datatoken.getPaymentCollector(datatokenAddress)) === user3)
// assert( assert(
// (await datatoken.getDTPermissions(datatokenAddress, user1)).paymentManager === true (await datatoken.getDTPermissions(datatokenAddress, user1)).paymentManager === true
// ) )
// try {await datatoken.cleanPermissions(datatokenAddress, nftOwner)} catch(e){ try {await datatoken.cleanPermissions(datatokenAddress, user2)} catch(e){
// assert(e.message === 'Caller is not NFTOwner') assert(e.message === 'Caller is NOT Nft Owner')
// } }
// assert((await datatoken.getPaymentCollector(datatokenAddress)) === nftOwner) assert((await datatoken.getPaymentCollector(datatokenAddress)) === user3)
// assert( assert(
// (await datatoken.getDTPermissions(datatokenAddress, nftOwner)).minter === false (await datatoken.getDTPermissions(datatokenAddress, nftOwner)).minter === true
// ) )
// assert( assert(
// (await datatoken.getDTPermissions(datatokenAddress, user1)).paymentManager === false (await datatoken.getDTPermissions(datatokenAddress, user1)).paymentManager === true
// ) )
// }) })
it('#cleanPermissions - should clean permissions at ERC20 level', async () => { it('#cleanPermissions - should clean permissions at ERC20 level', async () => {