|
|
@@ -359,14 +359,17 @@ pub async fn update_cipher_from_data(
|
|
|
enforce_personal_ownership_policy(Some(&data), headers, conn).await?;
|
|
|
|
|
|
// Check that the client isn't updating an existing cipher with stale data.
|
|
|
- if let Some(dt) = data.LastKnownRevisionDate {
|
|
|
- match NaiveDateTime::parse_from_str(&dt, "%+") {
|
|
|
- // ISO 8601 format
|
|
|
- Err(err) => warn!("Error parsing LastKnownRevisionDate '{}': {}", dt, err),
|
|
|
- Ok(dt) if cipher.updated_at.signed_duration_since(dt).num_seconds() > 1 => {
|
|
|
- err!("The client copy of this cipher is out of date. Resync the client and try again.")
|
|
|
+ // And only perform this check when not importing ciphers, else the date/time check will fail.
|
|
|
+ if ut != UpdateType::None {
|
|
|
+ if let Some(dt) = data.LastKnownRevisionDate {
|
|
|
+ match NaiveDateTime::parse_from_str(&dt, "%+") {
|
|
|
+ // ISO 8601 format
|
|
|
+ Err(err) => warn!("Error parsing LastKnownRevisionDate '{}': {}", dt, err),
|
|
|
+ Ok(dt) if cipher.updated_at.signed_duration_since(dt).num_seconds() > 1 => {
|
|
|
+ err!("The client copy of this cipher is out of date. Resync the client and try again.")
|
|
|
+ }
|
|
|
+ Ok(_) => (),
|
|
|
}
|
|
|
- Ok(_) => (),
|
|
|
}
|
|
|
}
|
|
|
|