difftreelog
feat implement owner control limitation
in: master
1 file changed
pallets/nft/src/lib.rsdiffbeforeafterboth382 AccountTokenLimitExceeded,382 AccountTokenLimitExceeded,383 /// Collection limit bounds per collection exceeded383 /// Collection limit bounds per collection exceeded384 CollectionLimitBoundsExceeded,384 CollectionLimitBoundsExceeded,385 /// Tried to enable permissions which are only permitted to be disabled386 OwnerPermissionsCantBeReturned,385 /// Schema data size limit bound exceeded387 /// Schema data size limit bound exceeded386 SchemaDataLimitExceeded,388 SchemaDataLimitExceeded,387 /// Maximum refungibility exceeded389 /// Maximum refungibility exceeded624 let sender = ensure_signed(origin)?;626 let sender = ensure_signed(origin)?;625 Self::check_owner_permissions(collection_id, sender)?;627 Self::check_owner_permissions(collection_id, sender)?;628629 let mut target_collection = <Collection<T>>::get(collection_id);630 if !target_collection.limits.owner_can_destroy {631 fail!(Error::<T>::NoPermission);632 }626633627 <AddressTokens<T>>::remove_prefix(collection_id);634 <AddressTokens<T>>::remove_prefix(collection_id);628 <Allowances<T>>::remove_prefix(collection_id);635 <Allowances<T>>::remove_prefix(collection_id);1009 let target_collection = <Collection<T>>::get(collection_id);1016 let target_collection = <Collection<T>>::get(collection_id);1010 ensure!(Self::is_item_owner(sender.clone(), collection_id, item_id) ||1017 ensure!(1018 Self::is_item_owner(sender.clone(), collection_id, item_id) ||1019 (1020 target_collection.limits.owner_can_transfer &&1011 Self::is_owner_or_admin_permissions(collection_id, sender.clone()),1021 Self::is_owner_or_admin_permissions(collection_id, sender.clone())1022 ),1012 Error::<T>::NoPermission);1023 Error::<T>::NoPermission1024 );101310251085 let target_collection = <Collection<T>>::get(collection_id);1097 let target_collection = <Collection<T>>::get(collection_id);1086 ensure!(Self::is_item_owner(sender.clone(), collection_id, item_id) ||1098 ensure!(1099 Self::is_item_owner(sender.clone(), collection_id, item_id) ||1100 (1101 target_collection.limits.owner_can_transfer &&1087 Self::is_owner_or_admin_permissions(collection_id, sender.clone()),1102 Self::is_owner_or_admin_permissions(collection_id, sender.clone())1103 ),1088 Error::<T>::NoPermission);1104 Error::<T>::NoPermission1105 );108911061143 // Transfer permissions check 1160 // Transfer permissions check 1144 ensure!(appoved_transfer || Self::is_owner_or_admin_permissions(collection_id, sender.clone()),1161 ensure!(1162 appoved_transfer || 1163 (1164 target_collection.limits.owner_can_transfer &&1165 Self::is_owner_or_admin_permissions(collection_id, sender.clone())1166 ),1145 Error::<T>::NoPermission);1167 Error::<T>::NoPermission1168 );114611691527 limits.token_limit <= chain_limits.account_token_ownership_limit, 1550 limits.token_limit <= chain_limits.account_token_ownership_limit, 1528 Error::<T>::AccountTokenLimitExceeded);1551 Error::<T>::AccountTokenLimitExceeded);15521553 ensure!(1554 (climits.owner_can_transfer || !limits.owner_can_transfer) &&1555 (climits.owner_can_destroy || !limits.owner_can_destroy),1556 Error::<T>::OwnerPermissionsCantBeReturned,1557 );152915581530 target_collection.limits = limits;1559 target_collection.limits = limits;1531 <Collection<T>>::insert(collection_id, target_collection);1560 <Collection<T>>::insert(collection_id, target_collection);