commit 551810c4862506ed39780850a35ac12df1aca1a9
parent b987ba506db6cb56a72c1ba1f964f7e9d021a9d1
Author: Daniel GarcĂa <dani-garcia@users.noreply.github.com>
Date: Wed, 17 Mar 2021 19:39:48 +0100
Fix updating file send
Diffstat:
1 file changed, 12 insertions(+), 16 deletions(-)
diff --git a/src/api/core/sends.rs b/src/api/core/sends.rs
@@ -48,7 +48,7 @@ pub struct SendData {
/// modify existing ones, but is allowed to delete them.
///
/// Ref: https://bitwarden.com/help/article/policies/#disable-send
-fn enforce_disable_send_policy(headers: &Headers,conn: &DbConn) -> EmptyResult {
+fn enforce_disable_send_policy(headers: &Headers, conn: &DbConn) -> EmptyResult {
let user_uuid = &headers.user.uuid;
let policy_type = OrgPolicyType::DisableSend;
if OrgPolicy::is_applicable_to_user(user_uuid, policy_type, conn) {
@@ -323,27 +323,23 @@ fn put_send(id: String, data: JsonUpcase<SendData>, headers: Headers, conn: DbCo
err!("Sends can't change type")
}
- let data_val = if data.Type == SendType::Text as i32 {
- data.Text
- } else if data.Type == SendType::File as i32 {
- data.File
- } else {
- err!("Invalid Send type")
- };
-
- let data_str = if let Some(mut d) = data_val {
- d.as_object_mut().and_then(|d| d.remove("Response"));
- serde_json::to_string(&d)?
- } else {
- err!("Send data not provided");
- };
+ // When updating a file Send, we receive nulls in the File field, as it's immutable,
+ // so we only need to update the data field in the Text case
+ if data.Type == SendType::Text as i32 {
+ let data_str = if let Some(mut d) = data.Text {
+ d.as_object_mut().and_then(|d| d.remove("Response"));
+ serde_json::to_string(&d)?
+ } else {
+ err!("Send data not provided");
+ };
+ send.data = data_str;
+ }
if data.DeletionDate > Utc::now() + Duration::days(31) {
err!(
"You cannot have a Send with a deletion date that far into the future. Adjust the Deletion Date to a value less than 31 days from now and try again."
);
}
- send.data = data_str;
send.name = data.Name;
send.akey = data.Key;
send.deletion_date = data.DeletionDate.naive_utc();