git.delta.rocks / unique-network / refs/commits / 399cd1708061

difftreelog

Change PropertyPermission

Daniel Shiposha2022-05-06parent: #36342f0.patch.diff
in: master

3 files changed

modifiedpallets/common/src/lib.rsdiffbeforeafterboth
--- a/pallets/common/src/lib.rs
+++ b/pallets/common/src/lib.rs
@@ -812,7 +812,7 @@
 		let current_permission = all_permissions.get(&property_permission.key);
 		if matches![
 			current_permission,
-			Some(PropertyPermission::AdminConst | PropertyPermission::ItemOwnerConst)
+			Some(PropertyPermission { mutable: false, .. })
 		] {
 			return Err(<Error<T>>::NoPermission.into());
 		}
modifiedpallets/nonfungible/src/lib.rsdiffbeforeafterboth
321 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());
325325
326 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();
337337
338 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 }
342
340 (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());
349
350 if collection_admin {
351 check_result = collection.check_is_owner_or_admin(sender);
352 }
353
354 if token_owner {
355 check_result.or(check_token_owner())
356 } else {
357 check_result
358 }
359 }
347 }360 }
348 }361 }
349362
modifiedprimitives/data-structs/src/lib.rsdiffbeforeafterboth
--- a/primitives/data-structs/src/lib.rs
+++ b/primitives/data-structs/src/lib.rs
@@ -635,13 +635,20 @@
 
 #[derive(Encode, Decode, TypeInfo, Debug, MaxEncodedLen, PartialEq, Clone)]
 #[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
-pub enum PropertyPermission {
-	None,
-	AdminConst,
-	Admin,
-	ItemOwnerConst,
-	ItemOwner,
-	ItemOwnerOrAdmin,
+pub struct PropertyPermission {
+	pub mutable: bool,
+	pub collection_admin: bool,
+	pub token_owner: bool,
+}
+
+impl PropertyPermission {
+	pub fn none() -> Self {
+		Self {
+			mutable: true,
+			collection_admin: false,
+			token_owner: false,
+		}
+	}
 }
 
 #[derive(Encode, Decode, Debug, TypeInfo, Clone, PartialEq, MaxEncodedLen)]