Browse Source
			
			
			fix account recovery withdrawal (#5968)
			
				since `web-v2025.4.0` the client sends `""` instead of `null`, so we
also have to check whether the `reset_password_key` is empty or not.
			
			
				pull/5993/head
			
			
		 
		
			
				
					
						
						Stefan Melmuk
					
					5 months ago
					
						
							committed by
							
								
								GitHub
							
						 
					
				 
				
			 
		 
		
			
				
					
					No known key found for this signature in database
					
						
							GPG Key ID: B5690EEEBB952194
						
					
				
			
		
		
		
	
		
			
				 1 changed files with 
9 additions and 
5 deletions
			 
			
		 
		
			
				- 
					
					
					 
					src/api/core/organizations.rs
				
 
			
		
		
			
			
			
			
			
			
				
				
					
						
							
								
									
	
		
			
				
					| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -3334,13 +3334,17 @@ async fn put_reset_password_enrollment( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let reset_request = data.into_inner(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if reset_request.reset_password_key.is_none() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        && OrgPolicy::org_is_reset_password_auto_enroll(&org_id, &mut conn).await | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let reset_password_key = match reset_request.reset_password_key { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        None => None, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        Some(ref key) if key.is_empty() => None, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        Some(key) => Some(key), | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    }; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if reset_password_key.is_none() && OrgPolicy::org_is_reset_password_auto_enroll(&org_id, &mut conn).await { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        err!("Reset password can't be withdrawn due to an enterprise policy"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if reset_request.reset_password_key.is_some() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if reset_password_key.is_some() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        PasswordOrOtpData { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            master_password_hash: reset_request.master_password_hash, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            otp: reset_request.otp, | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -3349,7 +3353,7 @@ async fn put_reset_password_enrollment( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        .await?; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    member.reset_password_key = reset_request.reset_password_key; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    member.reset_password_key = reset_password_key; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    member.save(&mut conn).await?; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let log_id = if member.reset_password_key.is_some() { | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |