mirror of
				https://github.com/dani-garcia/vaultwarden.git
				synced 2025-10-31 02:08:20 +02:00 
			
		
		
		
	Fix an issue with login with device (#5379)
During the refactoring done in #5320 there has a buggy slipped through which changed a uuid. This commit fixes this, and also made some vars pass by reference. Fixes #5377 Signed-off-by: BlackDex <black.dex@gmail.com>
This commit is contained in:
		
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							16b6d2a71e
						
					
				
				
					commit
					ca7483df85
				
			| @@ -1264,7 +1264,7 @@ async fn put_auth_request( | ||||
|         auth_request.save(&mut conn).await?; | ||||
|  | ||||
|         ant.send_auth_response(&auth_request.user_uuid, &auth_request.uuid).await; | ||||
|         nt.send_auth_response(&auth_request.user_uuid, &auth_request.uuid, data.device_identifier, &mut conn).await; | ||||
|         nt.send_auth_response(&auth_request.user_uuid, &auth_request.uuid, &data.device_identifier, &mut conn).await; | ||||
|     } else { | ||||
|         // If denied, there's no reason to keep the request | ||||
|         auth_request.delete(&mut conn).await?; | ||||
|   | ||||
| @@ -10,7 +10,7 @@ use rocket_ws::{Message, WebSocket}; | ||||
| use crate::{ | ||||
|     auth::{ClientIp, WsAccessTokenHeader}, | ||||
|     db::{ | ||||
|         models::{Cipher, CollectionId, DeviceId, Folder, Send as DbSend, User, UserId}, | ||||
|         models::{AuthRequestId, Cipher, CollectionId, DeviceId, Folder, Send as DbSend, User, UserId}, | ||||
|         DbConn, | ||||
|     }, | ||||
|     Error, CONFIG, | ||||
| @@ -522,8 +522,8 @@ impl WebSocketUsers { | ||||
|     pub async fn send_auth_response( | ||||
|         &self, | ||||
|         user_id: &UserId, | ||||
|         auth_response_uuid: &str, | ||||
|         approving_device_uuid: DeviceId, | ||||
|         auth_request_id: &AuthRequestId, | ||||
|         approving_device_id: &DeviceId, | ||||
|         conn: &mut DbConn, | ||||
|     ) { | ||||
|         // Skip any processing if both WebSockets and Push are not active | ||||
| @@ -531,16 +531,16 @@ impl WebSocketUsers { | ||||
|             return; | ||||
|         } | ||||
|         let data = create_update( | ||||
|             vec![("Id".into(), auth_response_uuid.to_owned().into()), ("UserId".into(), user_id.to_string().into())], | ||||
|             vec![("Id".into(), auth_request_id.to_string().into()), ("UserId".into(), user_id.to_string().into())], | ||||
|             UpdateType::AuthRequestResponse, | ||||
|             Some(approving_device_uuid.clone()), | ||||
|             Some(approving_device_id.clone()), | ||||
|         ); | ||||
|         if CONFIG.enable_websocket() { | ||||
|             self.send_update(user_id, &data).await; | ||||
|         } | ||||
|  | ||||
|         if CONFIG.push_enabled() { | ||||
|             push_auth_response(user_id.clone(), auth_response_uuid.to_string(), approving_device_uuid, conn).await; | ||||
|             push_auth_response(user_id, auth_request_id, approving_device_id, conn).await; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -559,16 +559,16 @@ impl AnonymousWebSocketSubscriptions { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     pub async fn send_auth_response(&self, user_id: &UserId, auth_response_uuid: &str) { | ||||
|     pub async fn send_auth_response(&self, user_id: &UserId, auth_request_id: &AuthRequestId) { | ||||
|         if !CONFIG.enable_websocket() { | ||||
|             return; | ||||
|         } | ||||
|         let data = create_anonymous_update( | ||||
|             vec![("Id".into(), auth_response_uuid.to_owned().into()), ("UserId".into(), user_id.to_string().into())], | ||||
|             vec![("Id".into(), auth_request_id.to_string().into()), ("UserId".into(), user_id.to_string().into())], | ||||
|             UpdateType::AuthRequestResponse, | ||||
|             user_id.clone(), | ||||
|         ); | ||||
|         self.send_update(user_id, &data).await; | ||||
|         self.send_update(auth_request_id, &data).await; | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -7,7 +7,7 @@ use tokio::sync::RwLock; | ||||
|  | ||||
| use crate::{ | ||||
|     api::{ApiResult, EmptyResult, UpdateType}, | ||||
|     db::models::{Cipher, Device, DeviceId, Folder, Send, User, UserId}, | ||||
|     db::models::{AuthRequestId, Cipher, Device, DeviceId, Folder, Send, User, UserId}, | ||||
|     http_client::make_http_request, | ||||
|     util::format_date, | ||||
|     CONFIG, | ||||
| @@ -301,12 +301,12 @@ pub async fn push_auth_request(user_id: UserId, auth_request_id: String, conn: & | ||||
| } | ||||
|  | ||||
| pub async fn push_auth_response( | ||||
|     user_id: UserId, | ||||
|     auth_request_id: String, | ||||
|     approving_device_id: DeviceId, | ||||
|     user_id: &UserId, | ||||
|     auth_request_id: &AuthRequestId, | ||||
|     approving_device_id: &DeviceId, | ||||
|     conn: &mut crate::db::DbConn, | ||||
| ) { | ||||
|     if Device::check_user_has_push_device(&user_id, conn).await { | ||||
|     if Device::check_user_has_push_device(user_id, conn).await { | ||||
|         tokio::task::spawn(send_to_push_relay(json!({ | ||||
|             "userId": user_id, | ||||
|             "organizationId": (), | ||||
|   | ||||
		Reference in New Issue
	
	Block a user