| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -7,7 +7,7 @@ use rocket_contrib::json::Json; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use serde_json::Value; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use crate::{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    api::{ApiResult, EmptyResult, JsonResult, JsonUpcase, Notify, UpdateType}, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    api::{ApiResult, EmptyResult, JsonResult, JsonUpcase, Notify, NumberOrString, UpdateType}, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    auth::{Headers, Host}, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    db::{models::*, DbConn, DbPool}, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    util::SafeString, | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -42,21 +42,21 @@ pub fn purge_sends(pool: DbPool) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#[derive(Deserialize)] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#[allow(non_snake_case)] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					pub struct SendData { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    pub Type: i32, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    pub Key: String, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    pub Password: Option<String>, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    pub MaxAccessCount: Option<i32>, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    pub ExpirationDate: Option<DateTime<Utc>>, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    pub DeletionDate: DateTime<Utc>, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    pub Disabled: bool, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    pub HideEmail: Option<bool>, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					struct SendData { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    Type: i32, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    Key: String, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    Password: Option<String>, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    MaxAccessCount: Option<NumberOrString>, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    ExpirationDate: Option<DateTime<Utc>>, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    DeletionDate: DateTime<Utc>, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    Disabled: bool, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    HideEmail: Option<bool>, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // Data field
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    pub Name: String, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    pub Notes: Option<String>, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    pub Text: Option<Value>, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    pub File: Option<Value>, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    Name: String, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    Notes: Option<String>, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    Text: Option<Value>, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    File: Option<Value>, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/// Enforces the `Disable Send` policy. A non-owner/admin user belonging to
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -119,7 +119,10 @@ fn create_send(data: SendData, user_uuid: String) -> ApiResult<Send> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let mut send = Send::new(data.Type, data.Name, data_str, data.Key, data.DeletionDate.naive_utc()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    send.user_uuid = Some(user_uuid); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    send.notes = data.Notes; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    send.max_access_count = data.MaxAccessCount; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    send.max_access_count = match data.MaxAccessCount { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        Some(m) => Some(m.into_i32()?), | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        _ => None, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    }; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    send.expiration_date = data.ExpirationDate.map(|d| d.naive_utc()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    send.disabled = data.Disabled; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    send.hide_email = data.HideEmail; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -414,7 +417,10 @@ fn put_send(id: String, data: JsonUpcase<SendData>, headers: Headers, conn: DbCo | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    send.akey = data.Key; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    send.deletion_date = data.DeletionDate.naive_utc(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    send.notes = data.Notes; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    send.max_access_count = data.MaxAccessCount; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    send.max_access_count = match data.MaxAccessCount { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        Some(m) => Some(m.into_i32()?), | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        _ => None, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    }; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    send.expiration_date = data.ExpirationDate.map(|d| d.naive_utc()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    send.hide_email = data.HideEmail; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    send.disabled = data.Disabled; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |