use device_id

pull/5320/head
Stefan Melmuk 5 days ago
parent 72b51e0082
commit bc70927670
No known key found for this signature in database
GPG Key ID: 817020C608FE9C09

@ -1069,26 +1069,31 @@ struct PushToken {
push_token: String, push_token: String,
} }
#[post("/devices/identifier/<uuid>/token", data = "<data>")] #[post("/devices/identifier/<device_id>/token", data = "<data>")]
async fn post_device_token(uuid: &str, data: Json<PushToken>, headers: Headers, conn: DbConn) -> EmptyResult { async fn post_device_token(device_id: DeviceId, data: Json<PushToken>, headers: Headers, conn: DbConn) -> EmptyResult {
put_device_token(uuid, data, headers, conn).await put_device_token(device_id, data, headers, conn).await
} }
#[put("/devices/identifier/<uuid>/token", data = "<data>")] #[put("/devices/identifier/<device_id>/token", data = "<data>")]
async fn put_device_token(uuid: &str, data: Json<PushToken>, headers: Headers, mut conn: DbConn) -> EmptyResult { async fn put_device_token(
device_id: DeviceId,
data: Json<PushToken>,
headers: Headers,
mut conn: DbConn,
) -> EmptyResult {
let data = data.into_inner(); let data = data.into_inner();
let token = data.push_token; let token = data.push_token;
let Some(mut device) = Device::find_by_uuid_and_user(&headers.device.uuid, &headers.user.uuid, &mut conn).await let Some(mut device) = Device::find_by_uuid_and_user(&headers.device.uuid, &headers.user.uuid, &mut conn).await
else { else {
err!(format!("Error: device {uuid} should be present before a token can be assigned")) err!(format!("Error: device {device_id} should be present before a token can be assigned"))
}; };
// if the device already has been registered // if the device already has been registered
if device.is_registered() { if device.is_registered() {
// check if the new token is the same as the registered token // check if the new token is the same as the registered token
if device.push_token.is_some() && device.push_token.unwrap() == token.clone() { if device.push_token.is_some() && device.push_token.unwrap() == token.clone() {
debug!("Device {} is already registered and token is the same", uuid); debug!("Device {} is already registered and token is the same", device_id);
return Ok(()); return Ok(());
} else { } else {
// Try to unregister already registered device // Try to unregister already registered device
@ -1107,8 +1112,8 @@ async fn put_device_token(uuid: &str, data: Json<PushToken>, headers: Headers, m
Ok(()) Ok(())
} }
#[put("/devices/identifier/<uuid>/clear-token")] #[put("/devices/identifier/<device_id>/clear-token")]
async fn put_clear_device_token(uuid: DeviceId, mut conn: DbConn) -> EmptyResult { async fn put_clear_device_token(device_id: DeviceId, mut conn: DbConn) -> EmptyResult {
// This only clears push token // This only clears push token
// https://github.com/bitwarden/core/blob/master/src/Api/Controllers/DevicesController.cs#L109 // https://github.com/bitwarden/core/blob/master/src/Api/Controllers/DevicesController.cs#L109
// https://github.com/bitwarden/core/blob/master/src/Core/Services/Implementations/DeviceService.cs#L37 // https://github.com/bitwarden/core/blob/master/src/Core/Services/Implementations/DeviceService.cs#L37
@ -1117,8 +1122,8 @@ async fn put_clear_device_token(uuid: DeviceId, mut conn: DbConn) -> EmptyResult
return Ok(()); return Ok(());
} }
if let Some(device) = Device::find_by_uuid(&uuid, &mut conn).await { if let Some(device) = Device::find_by_uuid(&device_id, &mut conn).await {
Device::clear_push_token_by_uuid(&uuid, &mut conn).await?; Device::clear_push_token_by_uuid(&device_id, &mut conn).await?;
unregister_push_device(device.push_uuid).await?; unregister_push_device(device.push_uuid).await?;
} }
@ -1126,9 +1131,9 @@ async fn put_clear_device_token(uuid: DeviceId, mut conn: DbConn) -> EmptyResult
} }
// On upstream server, both PUT and POST are declared. Implementing the POST method in case it would be useful somewhere // On upstream server, both PUT and POST are declared. Implementing the POST method in case it would be useful somewhere
#[post("/devices/identifier/<uuid>/clear-token")] #[post("/devices/identifier/<device_id>/clear-token")]
async fn post_clear_device_token(uuid: DeviceId, conn: DbConn) -> EmptyResult { async fn post_clear_device_token(device_id: DeviceId, conn: DbConn) -> EmptyResult {
put_clear_device_token(uuid, conn).await put_clear_device_token(device_id, conn).await
} }
#[derive(Debug, Deserialize)] #[derive(Debug, Deserialize)]

Loading…
Cancel
Save