mirror of
				https://github.com/dani-garcia/vaultwarden.git
				synced 2025-11-04 12:18:20 +02:00 
			
		
		
		
	fix invitations of new users when mail is disabled
If you add a new user that has already been Invited to another organization they will be Accepted automatically. This should not be possible because they cannot be Confirmed until they have completed their registration. It is also not necessary because their invitation will be accepted automatically once they register.
This commit is contained in:
		
				
					committed by
					
						
						Daniel García
					
				
			
			
				
	
			
			
			
						parent
						
							aa5a05960e
						
					
				
				
					commit
					a2d716aec3
				
			@@ -600,11 +600,7 @@ async fn send_invite(org_id: String, data: JsonUpcase<InviteData>, headers: Admi
 | 
			
		||||
 | 
			
		||||
    for email in data.Emails.iter() {
 | 
			
		||||
        let email = email.to_lowercase();
 | 
			
		||||
        let mut user_org_status = if CONFIG.mail_enabled() {
 | 
			
		||||
            UserOrgStatus::Invited as i32
 | 
			
		||||
        } else {
 | 
			
		||||
            UserOrgStatus::Accepted as i32 // Automatically mark user as accepted if no email invites
 | 
			
		||||
        };
 | 
			
		||||
        let mut user_org_status = UserOrgStatus::Invited as i32;
 | 
			
		||||
        let user = match User::find_by_mail(&email, &conn).await {
 | 
			
		||||
            None => {
 | 
			
		||||
                if !CONFIG.invitations_allowed() {
 | 
			
		||||
@@ -622,13 +618,16 @@ async fn send_invite(org_id: String, data: JsonUpcase<InviteData>, headers: Admi
 | 
			
		||||
 | 
			
		||||
                let mut user = User::new(email.clone());
 | 
			
		||||
                user.save(&conn).await?;
 | 
			
		||||
                user_org_status = UserOrgStatus::Invited as i32;
 | 
			
		||||
                user
 | 
			
		||||
            }
 | 
			
		||||
            Some(user) => {
 | 
			
		||||
                if UserOrganization::find_by_user_and_org(&user.uuid, &org_id, &conn).await.is_some() {
 | 
			
		||||
                    err!(format!("User already in organization: {}", email))
 | 
			
		||||
                } else {
 | 
			
		||||
                    // automatically accept existing users if mail is disabled
 | 
			
		||||
                    if !CONFIG.mail_enabled() && !user.password_hash.is_empty() {
 | 
			
		||||
                        user_org_status = UserOrgStatus::Accepted as i32;
 | 
			
		||||
                    }
 | 
			
		||||
                    user
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user