|  |  | @ -26,8 +26,8 @@ pub fn routes() -> Vec<Route> { | 
			
		
	
		
			
				
					|  |  |  | #[derive(Serialize, Deserialize)] | 
			
		
	
		
			
				
					|  |  |  | struct DuoData { | 
			
		
	
		
			
				
					|  |  |  |     host: String, // Duo API hostname
 | 
			
		
	
		
			
				
					|  |  |  |     ik: String,   // integration key
 | 
			
		
	
		
			
				
					|  |  |  |     sk: String,   // secret key
 | 
			
		
	
		
			
				
					|  |  |  |     ik: String,   // client id
 | 
			
		
	
		
			
				
					|  |  |  |     sk: String,   // client secret
 | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | impl DuoData { | 
			
		
	
	
		
			
				
					|  |  | @ -111,8 +111,8 @@ async fn get_duo(data: Json<PasswordOrOtpData>, headers: Headers, mut conn: DbCo | 
			
		
	
		
			
				
					|  |  |  |         json!({ | 
			
		
	
		
			
				
					|  |  |  |             "enabled": enabled, | 
			
		
	
		
			
				
					|  |  |  |             "host": data.host, | 
			
		
	
		
			
				
					|  |  |  |             "secretKey": data.sk, | 
			
		
	
		
			
				
					|  |  |  |             "integrationKey": data.ik, | 
			
		
	
		
			
				
					|  |  |  |             "clientSecret": data.sk, | 
			
		
	
		
			
				
					|  |  |  |             "clientId": data.ik, | 
			
		
	
		
			
				
					|  |  |  |             "object": "twoFactorDuo" | 
			
		
	
		
			
				
					|  |  |  |         }) | 
			
		
	
		
			
				
					|  |  |  |     } else { | 
			
		
	
	
		
			
				
					|  |  | @ -129,8 +129,8 @@ async fn get_duo(data: Json<PasswordOrOtpData>, headers: Headers, mut conn: DbCo | 
			
		
	
		
			
				
					|  |  |  | #[serde(rename_all = "camelCase")] | 
			
		
	
		
			
				
					|  |  |  | struct EnableDuoData { | 
			
		
	
		
			
				
					|  |  |  |     host: String, | 
			
		
	
		
			
				
					|  |  |  |     secret_key: String, | 
			
		
	
		
			
				
					|  |  |  |     integration_key: String, | 
			
		
	
		
			
				
					|  |  |  |     client_secret: String, | 
			
		
	
		
			
				
					|  |  |  |     client_id: String, | 
			
		
	
		
			
				
					|  |  |  |     master_password_hash: Option<String>, | 
			
		
	
		
			
				
					|  |  |  |     otp: Option<String>, | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
	
		
			
				
					|  |  | @ -139,8 +139,8 @@ impl From<EnableDuoData> for DuoData { | 
			
		
	
		
			
				
					|  |  |  |     fn from(d: EnableDuoData) -> Self { | 
			
		
	
		
			
				
					|  |  |  |         Self { | 
			
		
	
		
			
				
					|  |  |  |             host: d.host, | 
			
		
	
		
			
				
					|  |  |  |             ik: d.integration_key, | 
			
		
	
		
			
				
					|  |  |  |             sk: d.secret_key, | 
			
		
	
		
			
				
					|  |  |  |             ik: d.client_id, | 
			
		
	
		
			
				
					|  |  |  |             sk: d.client_secret, | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
	
		
			
				
					|  |  | @ -151,7 +151,7 @@ fn check_duo_fields_custom(data: &EnableDuoData) -> bool { | 
			
		
	
		
			
				
					|  |  |  |         st.is_empty() || s == DISABLED_MESSAGE_DEFAULT | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     !empty_or_default(&data.host) && !empty_or_default(&data.secret_key) && !empty_or_default(&data.integration_key) | 
			
		
	
		
			
				
					|  |  |  |     !empty_or_default(&data.host) && !empty_or_default(&data.client_secret) && !empty_or_default(&data.client_id) | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | #[post("/two-factor/duo", data = "<data>")] | 
			
		
	
	
		
			
				
					|  |  | @ -186,8 +186,8 @@ async fn activate_duo(data: Json<EnableDuoData>, headers: Headers, mut conn: DbC | 
			
		
	
		
			
				
					|  |  |  |     Ok(Json(json!({ | 
			
		
	
		
			
				
					|  |  |  |         "enabled": true, | 
			
		
	
		
			
				
					|  |  |  |         "host": data.host, | 
			
		
	
		
			
				
					|  |  |  |         "secretKey": data.sk, | 
			
		
	
		
			
				
					|  |  |  |         "integrationKey": data.ik, | 
			
		
	
		
			
				
					|  |  |  |         "clientSecret": data.sk, | 
			
		
	
		
			
				
					|  |  |  |         "clientId": data.ik, | 
			
		
	
		
			
				
					|  |  |  |         "object": "twoFactorDuo" | 
			
		
	
		
			
				
					|  |  |  |     }))) | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
	
		
			
				
					|  |  | 
 |