mirror of
				https://github.com/dani-garcia/vaultwarden.git
				synced 2025-10-31 02:08:20 +02:00 
			
		
		
		
	Fix another sync issue with native clients (#5259)
The `reprompt` value somehow sometimes has a value of `4`. This isn't a valid value, and doesn't cause issues with other clients, but the native clients are more strict. This commit fixes this by validating the value before storing and returning. Signed-off-by: BlackDex <black.dex@gmail.com>
This commit is contained in:
		
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							d7adce97df
						
					
				
				
					commit
					c9860af11c
				
			| @@ -511,7 +511,7 @@ pub async fn update_cipher_from_data( | |||||||
|     cipher.fields = data.fields.map(|f| _clean_cipher_data(f).to_string()); |     cipher.fields = data.fields.map(|f| _clean_cipher_data(f).to_string()); | ||||||
|     cipher.data = type_data.to_string(); |     cipher.data = type_data.to_string(); | ||||||
|     cipher.password_history = data.password_history.map(|f| f.to_string()); |     cipher.password_history = data.password_history.map(|f| f.to_string()); | ||||||
|     cipher.reprompt = data.reprompt; |     cipher.reprompt = data.reprompt.filter(|r| *r == RepromptType::None as i32 || *r == RepromptType::Password as i32); | ||||||
|  |  | ||||||
|     cipher.save(conn).await?; |     cipher.save(conn).await?; | ||||||
|     cipher.move_to_folder(data.folder_id, &headers.user.uuid, conn).await?; |     cipher.move_to_folder(data.folder_id, &headers.user.uuid, conn).await?; | ||||||
|   | |||||||
| @@ -46,10 +46,9 @@ db_object! { | |||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| #[allow(dead_code)] |  | ||||||
| pub enum RepromptType { | pub enum RepromptType { | ||||||
|     None = 0, |     None = 0, | ||||||
|     Password = 1, // not currently used in server |     Password = 1, | ||||||
| } | } | ||||||
|  |  | ||||||
| /// Local methods | /// Local methods | ||||||
| @@ -296,7 +295,7 @@ impl Cipher { | |||||||
|             "creationDate": format_date(&self.created_at), |             "creationDate": format_date(&self.created_at), | ||||||
|             "revisionDate": format_date(&self.updated_at), |             "revisionDate": format_date(&self.updated_at), | ||||||
|             "deletedDate": self.deleted_at.map_or(Value::Null, |d| Value::String(format_date(&d))), |             "deletedDate": self.deleted_at.map_or(Value::Null, |d| Value::String(format_date(&d))), | ||||||
|             "reprompt": self.reprompt.unwrap_or(RepromptType::None as i32), |             "reprompt": self.reprompt.filter(|r| *r == RepromptType::None as i32 || *r == RepromptType::Password as i32).unwrap_or(RepromptType::None as i32), | ||||||
|             "organizationId": self.organization_uuid, |             "organizationId": self.organization_uuid, | ||||||
|             "key": self.key, |             "key": self.key, | ||||||
|             "attachments": attachments_json, |             "attachments": attachments_json, | ||||||
|   | |||||||
| @@ -18,7 +18,7 @@ mod user; | |||||||
|  |  | ||||||
| pub use self::attachment::Attachment; | pub use self::attachment::Attachment; | ||||||
| pub use self::auth_request::AuthRequest; | pub use self::auth_request::AuthRequest; | ||||||
| pub use self::cipher::Cipher; | pub use self::cipher::{Cipher, RepromptType}; | ||||||
| pub use self::collection::{Collection, CollectionCipher, CollectionUser}; | pub use self::collection::{Collection, CollectionCipher, CollectionUser}; | ||||||
| pub use self::device::{Device, DeviceType}; | pub use self::device::{Device, DeviceType}; | ||||||
| pub use self::emergency_access::{EmergencyAccess, EmergencyAccessStatus, EmergencyAccessType}; | pub use self::emergency_access::{EmergencyAccess, EmergencyAccessStatus, EmergencyAccessType}; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user