difftreelog
Change PropertyPermission
in: master
3 files changed
pallets/common/src/lib.rsdiffbeforeafterboth812 let current_permission = all_permissions.get(&property_permission.key);812 let current_permission = all_permissions.get(&property_permission.key);813 if matches![813 if matches![814 current_permission,814 current_permission,815 Some(PropertyPermission::AdminConst | PropertyPermission::ItemOwnerConst)815 Some(PropertyPermission { mutable: false, .. })816 ] {816 ] {817 return Err(<Error<T>>::NoPermission.into());817 return Err(<Error<T>>::NoPermission.into());818 }818 }pallets/nonfungible/src/lib.rsdiffbeforeafterboth321 let permission = <PalletCommon<T>>::property_permissions(collection.id)321 let permission = <PalletCommon<T>>::property_permissions(collection.id)322 .get(property_key)322 .get(property_key)323 .map(|p| p.clone())323 .map(|p| p.clone())324 .unwrap_or(PropertyPermission::None);324 .unwrap_or(PropertyPermission::none());325325326 let token_data = <TokenData<T>>::get((collection.id, token_id))326 let token_data = <TokenData<T>>::get((collection.id, token_id))327 .ok_or(<CommonError<T>>::TokenNotFound)?;327 .ok_or(<CommonError<T>>::TokenNotFound)?;335 .get_property(property_key)335 .get_property(property_key)336 .is_some();336 .is_some();337337338 match (permission, is_property_exists) {338 match permission {339 (PropertyPermission::AdminConst, false) => collection.check_is_owner_or_admin(sender),339 PropertyPermission { mutable: false, .. } if is_property_exists => {340 Err(<CommonError<T>>::NoPermission.into())341 }342340 (PropertyPermission::Admin, _) => collection.check_is_owner_or_admin(sender),343 PropertyPermission {344 collection_admin,345 token_owner,346 ..341 (PropertyPermission::ItemOwnerConst, false) => check_token_owner(),347 } => {342 (PropertyPermission::ItemOwner, _) => check_token_owner(),343 (PropertyPermission::ItemOwnerOrAdmin, _) => {344 check_token_owner().or(collection.check_is_owner_or_admin(sender))345 }346 _ => Err(<CommonError<T>>::NoPermission.into()),348 let mut check_result = Err(<CommonError<T>>::NoPermission.into());349350 if collection_admin {351 check_result = collection.check_is_owner_or_admin(sender);352 }353354 if token_owner {355 check_result.or(check_token_owner())356 } else {357 check_result358 }359 }347 }360 }348 }361 }349362primitives/data-structs/src/lib.rsdiffbeforeafterboth635635636#[derive(Encode, Decode, TypeInfo, Debug, MaxEncodedLen, PartialEq, Clone)]636#[derive(Encode, Decode, TypeInfo, Debug, MaxEncodedLen, PartialEq, Clone)]637#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]637#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]638pub enum PropertyPermission {638pub struct PropertyPermission {639 None,639 pub mutable: bool,640 AdminConst,640 pub collection_admin: bool,641 Admin,641 pub token_owner: bool,642 ItemOwnerConst,643 ItemOwner,644 ItemOwnerOrAdmin,645}642}643644impl PropertyPermission {645 pub fn none() -> Self {646 Self {647 mutable: true,648 collection_admin: false,649 token_owner: false,650 }651 }652}646653647#[derive(Encode, Decode, Debug, TypeInfo, Clone, PartialEq, MaxEncodedLen)]654#[derive(Encode, Decode, Debug, TypeInfo, Clone, PartialEq, MaxEncodedLen)]648#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]655#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]