Page MenuHomePhabricator

D10698.id35786.diff
No OneTemporary

D10698.id35786.diff

diff --git a/services/identity/src/constants.rs b/services/identity/src/constants.rs
--- a/services/identity/src/constants.rs
+++ b/services/identity/src/constants.rs
@@ -45,7 +45,6 @@
pub const USERS_TABLE_PARTITION_KEY: &str = "userID";
pub const USERS_TABLE_REGISTRATION_ATTRIBUTE: &str = "opaqueRegistrationData";
pub const USERS_TABLE_USERNAME_ATTRIBUTE: &str = "username";
-pub const USERS_TABLE_DEVICES_ATTRIBUTE: &str = "devices";
pub const USERS_TABLE_DEVICES_MAP_DEVICE_TYPE_ATTRIBUTE_NAME: &str =
"deviceType";
pub const USERS_TABLE_DEVICES_MAP_KEY_PAYLOAD_ATTRIBUTE_NAME: &str =
diff --git a/services/identity/src/database.rs b/services/identity/src/database.rs
--- a/services/identity/src/database.rs
+++ b/services/identity/src/database.rs
@@ -16,30 +16,12 @@
use std::str::FromStr;
use std::sync::Arc;
-use crate::{
- constants::USERS_TABLE_DEVICES_ATTRIBUTE,
- ddb_utils::{
- create_one_time_key_partition_key, into_one_time_put_requests, Identifier,
- OlmAccountType,
- },
-};
-use crate::{
- constants::{
- USERS_TABLE_DEVICES_MAP_CONTENT_PREKEY_ATTRIBUTE_NAME,
- USERS_TABLE_DEVICES_MAP_CONTENT_PREKEY_SIGNATURE_ATTRIBUTE_NAME,
- USERS_TABLE_DEVICES_MAP_NOTIF_PREKEY_ATTRIBUTE_NAME,
- USERS_TABLE_DEVICES_MAP_NOTIF_PREKEY_SIGNATURE_ATTRIBUTE_NAME,
- USERS_TABLE_DEVICES_MAP_SOCIAL_PROOF_ATTRIBUTE_NAME,
- },
- reserved_users::UserDetail,
-};
-use crate::{
- constants::{
- USERS_TABLE_DEVICES_MAP_KEY_PAYLOAD_ATTRIBUTE_NAME,
- USERS_TABLE_DEVICES_MAP_KEY_PAYLOAD_SIGNATURE_ATTRIBUTE_NAME,
- },
- error::{consume_error, Error},
+use crate::ddb_utils::{
+ create_one_time_key_partition_key, into_one_time_put_requests, Identifier,
+ OlmAccountType,
};
+use crate::error::{consume_error, Error};
+use crate::reserved_users::UserDetail;
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use tracing::{debug, error, info, warn};
@@ -227,22 +209,10 @@
user_id: Option<String>,
) -> Result<String, Error> {
let user_id = user_id.unwrap_or_else(generate_uuid);
- let device_info =
- create_device_info(flattened_device_key_upload.clone(), social_proof);
- let devices = HashMap::from([(
- flattened_device_key_upload.device_id_key.clone(),
- AttributeValue::M(device_info),
+ let mut user = HashMap::from([(
+ USERS_TABLE_PARTITION_KEY.to_string(),
+ AttributeValue::S(user_id.clone()),
)]);
- let mut user = HashMap::from([
- (
- USERS_TABLE_PARTITION_KEY.to_string(),
- AttributeValue::S(user_id.clone()),
- ),
- (
- USERS_TABLE_DEVICES_ATTRIBUTE.to_string(),
- AttributeValue::M(devices),
- ),
- ]);
if let Some((username, password_file)) = username_and_password_file {
user.insert(
@@ -292,16 +262,12 @@
code_version: u64,
access_token_creation_time: DateTime<Utc>,
) -> Result<(), Error> {
- // add device to the legacy device list
- self
- .add_device_to_users_table(
- user_id.clone(),
- flattened_device_key_upload.clone(),
- None,
- )
- .await?;
+ let content_one_time_keys =
+ flattened_device_key_upload.content_one_time_keys.clone();
+ let notif_one_time_keys =
+ flattened_device_key_upload.notif_one_time_keys.clone();
- // add device to the new device list if not exists
+ // add device to the device list if not exists
let device_id = flattened_device_key_upload.device_id_key.clone();
let device_exists = self
.device_exists(user_id.clone(), device_id.clone())
@@ -326,7 +292,17 @@
code_version,
access_token_creation_time,
)
- .await
+ .await?;
+
+ self
+ .append_one_time_prekeys(
+ device_id,
+ content_one_time_keys,
+ notif_one_time_keys,
+ )
+ .await?;
+
+ Ok(())
}
pub async fn add_wallet_user_device_to_users_table(
@@ -337,16 +313,12 @@
code_version: u64,
access_token_creation_time: DateTime<Utc>,
) -> Result<(), Error> {
- // add device to the legacy device list
- self
- .add_device_to_users_table(
- user_id.clone(),
- flattened_device_key_upload.clone(),
- Some(social_proof.clone()),
- )
- .await?;
+ let content_one_time_keys =
+ flattened_device_key_upload.content_one_time_keys.clone();
+ let notif_one_time_keys =
+ flattened_device_key_upload.notif_one_time_keys.clone();
- // add device to the new device list if not exists
+ // add device to the device list if not exists
let device_id = flattened_device_key_upload.device_id_key.clone();
let device_exists = self
.device_exists(user_id.clone(), device_id.clone())
@@ -372,7 +344,17 @@
code_version,
access_token_creation_time,
)
- .await
+ .await?;
+
+ self
+ .append_one_time_prekeys(
+ device_id,
+ content_one_time_keys,
+ notif_one_time_keys,
+ )
+ .await?;
+
+ Ok(())
}
pub async fn get_keyserver_keys_for_user(
@@ -607,51 +589,6 @@
Ok(())
}
- async fn add_device_to_users_table(
- &self,
- user_id: String,
- flattened_device_key_upload: FlattenedDeviceKeyUpload,
- social_proof: Option<String>,
- ) -> Result<(), Error> {
- // Avoid borrowing from lifetime of flattened_device_key_upload
- let device_id = flattened_device_key_upload.device_id_key.clone();
- let content_one_time_keys =
- flattened_device_key_upload.content_one_time_keys.clone();
- let notif_one_time_keys =
- flattened_device_key_upload.notif_one_time_keys.clone();
-
- let device_info =
- create_device_info(flattened_device_key_upload, social_proof);
- let update_expression =
- format!("SET {}.#{} = :v", USERS_TABLE_DEVICES_ATTRIBUTE, "deviceID",);
- let expression_attribute_names =
- HashMap::from([(format!("#{}", "deviceID"), device_id.clone())]);
- let expression_attribute_values =
- HashMap::from([(":v".to_string(), AttributeValue::M(device_info))]);
-
- self
- .client
- .update_item()
- .table_name(USERS_TABLE)
- .key(USERS_TABLE_PARTITION_KEY, AttributeValue::S(user_id))
- .update_expression(update_expression)
- .set_expression_attribute_names(Some(expression_attribute_names))
- .set_expression_attribute_values(Some(expression_attribute_values))
- .send()
- .await
- .map_err(|e| Error::AwsSdk(e.into()))?;
-
- self
- .append_one_time_prekeys(
- device_id,
- content_one_time_keys,
- notif_one_time_keys,
- )
- .await?;
-
- Ok(())
- }
-
pub async fn remove_device_from_users_table(
&self,
user_id: String,
@@ -1443,52 +1380,6 @@
}
}
-fn create_device_info(
- flattened_device_key_upload: FlattenedDeviceKeyUpload,
- social_proof: Option<String>,
-) -> AttributeMap {
- let mut device_info = HashMap::from([
- (
- USERS_TABLE_DEVICES_MAP_DEVICE_TYPE_ATTRIBUTE_NAME.to_string(),
- AttributeValue::S(flattened_device_key_upload.device_type.to_string()),
- ),
- (
- USERS_TABLE_DEVICES_MAP_KEY_PAYLOAD_ATTRIBUTE_NAME.to_string(),
- AttributeValue::S(flattened_device_key_upload.key_payload),
- ),
- (
- USERS_TABLE_DEVICES_MAP_KEY_PAYLOAD_SIGNATURE_ATTRIBUTE_NAME.to_string(),
- AttributeValue::S(flattened_device_key_upload.key_payload_signature),
- ),
- (
- USERS_TABLE_DEVICES_MAP_CONTENT_PREKEY_ATTRIBUTE_NAME.to_string(),
- AttributeValue::S(flattened_device_key_upload.content_prekey),
- ),
- (
- USERS_TABLE_DEVICES_MAP_CONTENT_PREKEY_SIGNATURE_ATTRIBUTE_NAME
- .to_string(),
- AttributeValue::S(flattened_device_key_upload.content_prekey_signature),
- ),
- (
- USERS_TABLE_DEVICES_MAP_NOTIF_PREKEY_ATTRIBUTE_NAME.to_string(),
- AttributeValue::S(flattened_device_key_upload.notif_prekey),
- ),
- (
- USERS_TABLE_DEVICES_MAP_NOTIF_PREKEY_SIGNATURE_ATTRIBUTE_NAME.to_string(),
- AttributeValue::S(flattened_device_key_upload.notif_prekey_signature),
- ),
- ]);
-
- if let Some(social_proof) = social_proof {
- device_info.insert(
- USERS_TABLE_DEVICES_MAP_SOCIAL_PROOF_ATTRIBUTE_NAME.to_string(),
- AttributeValue::S(social_proof),
- );
- }
-
- device_info
-}
-
#[cfg(test)]
mod tests {
use super::*;

File Metadata

Mime Type
text/plain
Expires
Sun, Oct 6, 7:12 PM (20 h, 47 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2250646
Default Alt Text
D10698.id35786.diff (8 KB)

Event Timeline