Changeset View
Changeset View
Standalone View
Standalone View
services/identity/src/client_service.rs
Show First 20 Lines • Show All 53 Lines • ▼ Show 20 Lines | pub enum WorkflowInProgress { | ||||
Update(UpdateState), | Update(UpdateState), | ||||
} | } | ||||
#[derive(Clone, Serialize, Deserialize)] | #[derive(Clone, Serialize, Deserialize)] | ||||
pub struct UserRegistrationInfo { | pub struct UserRegistrationInfo { | ||||
pub username: String, | pub username: String, | ||||
pub flattened_device_key_upload: FlattenedDeviceKeyUpload, | pub flattened_device_key_upload: FlattenedDeviceKeyUpload, | ||||
pub user_id: Option<String>, | pub user_id: Option<String>, | ||||
pub farcaster_id: Option<String>, | |||||
} | } | ||||
#[derive(Clone, Serialize, Deserialize)] | #[derive(Clone, Serialize, Deserialize)] | ||||
pub struct UserLoginInfo { | pub struct UserLoginInfo { | ||||
pub user_id: String, | pub user_id: String, | ||||
pub flattened_device_key_upload: FlattenedDeviceKeyUpload, | pub flattened_device_key_upload: FlattenedDeviceKeyUpload, | ||||
pub opaque_server_login: comm_opaque2::server::Login, | pub opaque_server_login: comm_opaque2::server::Login, | ||||
pub device_to_remove: Option<String>, | pub device_to_remove: Option<String>, | ||||
▲ Show 20 Lines • Show All 52 Lines • ▼ Show 20 Lines | ) -> Result<tonic::Response<RegistrationStartResponse>, tonic::Status> { | ||||
if RESERVED_USERNAME_SET.contains(&message.username) { | if RESERVED_USERNAME_SET.contains(&message.username) { | ||||
return Err(tonic::Status::invalid_argument("username reserved")); | return Err(tonic::Status::invalid_argument("username reserved")); | ||||
} | } | ||||
let registration_state = construct_user_registration_info( | let registration_state = construct_user_registration_info( | ||||
&message, | &message, | ||||
None, | None, | ||||
message.username.clone(), | message.username.clone(), | ||||
message.farcaster_id.clone(), | |||||
)?; | )?; | ||||
let server_registration = comm_opaque2::server::Registration::new(); | let server_registration = comm_opaque2::server::Registration::new(); | ||||
let server_message = server_registration | let server_message = server_registration | ||||
.start( | .start( | ||||
&CONFIG.server_setup, | &CONFIG.server_setup, | ||||
&message.opaque_registration_request, | &message.opaque_registration_request, | ||||
message.username.as_bytes(), | message.username.as_bytes(), | ||||
) | ) | ||||
Show All 38 Lines | let user_id = validate_account_ownership_message_and_get_user_id( | ||||
&message.keyserver_message, | &message.keyserver_message, | ||||
&message.keyserver_signature, | &message.keyserver_signature, | ||||
)?; | )?; | ||||
let registration_state = construct_user_registration_info( | let registration_state = construct_user_registration_info( | ||||
&message, | &message, | ||||
Some(user_id), | Some(user_id), | ||||
message.username.clone(), | message.username.clone(), | ||||
None, | |||||
)?; | )?; | ||||
let server_registration = comm_opaque2::server::Registration::new(); | let server_registration = comm_opaque2::server::Registration::new(); | ||||
let server_message = server_registration | let server_message = server_registration | ||||
.start( | .start( | ||||
&CONFIG.server_setup, | &CONFIG.server_setup, | ||||
&message.opaque_registration_request, | &message.opaque_registration_request, | ||||
message.username.as_bytes(), | message.username.as_bytes(), | ||||
) | ) | ||||
▲ Show 20 Lines • Show All 357 Lines • ▼ Show 20 Lines | let user_id = self | ||||
.client | .client | ||||
.add_wallet_user_to_users_table( | .add_wallet_user_to_users_table( | ||||
flattened_device_key_upload.clone(), | flattened_device_key_upload.clone(), | ||||
wallet_address, | wallet_address, | ||||
serialized_social_proof, | serialized_social_proof, | ||||
None, | None, | ||||
code_version, | code_version, | ||||
login_time, | login_time, | ||||
message.farcaster_id, | |||||
) | ) | ||||
.await | .await | ||||
.map_err(handle_db_error)?; | .map_err(handle_db_error)?; | ||||
// Create access token | // Create access token | ||||
let token = AccessTokenData::with_created_time( | let token = AccessTokenData::with_created_time( | ||||
user_id.clone(), | user_id.clone(), | ||||
flattened_device_key_upload.device_id_key, | flattened_device_key_upload.device_id_key, | ||||
▲ Show 20 Lines • Show All 65 Lines • ▼ Show 20 Lines | self | ||||
.client | .client | ||||
.add_wallet_user_to_users_table( | .add_wallet_user_to_users_table( | ||||
flattened_device_key_upload.clone(), | flattened_device_key_upload.clone(), | ||||
wallet_address, | wallet_address, | ||||
serialized_social_proof, | serialized_social_proof, | ||||
Some(user_id.clone()), | Some(user_id.clone()), | ||||
code_version, | code_version, | ||||
login_time, | login_time, | ||||
None, | |||||
) | ) | ||||
.await | .await | ||||
.map_err(handle_db_error)?; | .map_err(handle_db_error)?; | ||||
let token = AccessTokenData::with_created_time( | let token = AccessTokenData::with_created_time( | ||||
user_id.clone(), | user_id.clone(), | ||||
flattened_device_key_upload.device_id_key, | flattened_device_key_upload.device_id_key, | ||||
login_time, | login_time, | ||||
▲ Show 20 Lines • Show All 337 Lines • ▼ Show 20 Lines | match db_error { | ||||
} | } | ||||
} | } | ||||
} | } | ||||
fn construct_user_registration_info( | fn construct_user_registration_info( | ||||
message: &impl DeviceKeyUploadActions, | message: &impl DeviceKeyUploadActions, | ||||
user_id: Option<String>, | user_id: Option<String>, | ||||
username: String, | username: String, | ||||
farcaster_id: Option<String>, | |||||
) -> Result<UserRegistrationInfo, tonic::Status> { | ) -> Result<UserRegistrationInfo, tonic::Status> { | ||||
Ok(UserRegistrationInfo { | Ok(UserRegistrationInfo { | ||||
username, | username, | ||||
flattened_device_key_upload: construct_flattened_device_key_upload( | flattened_device_key_upload: construct_flattened_device_key_upload( | ||||
message, | message, | ||||
)?, | )?, | ||||
user_id, | user_id, | ||||
farcaster_id, | |||||
}) | }) | ||||
} | } | ||||
fn construct_user_login_info( | fn construct_user_login_info( | ||||
user_id: String, | user_id: String, | ||||
opaque_server_login: comm_opaque2::server::Login, | opaque_server_login: comm_opaque2::server::Login, | ||||
flattened_device_key_upload: FlattenedDeviceKeyUpload, | flattened_device_key_upload: FlattenedDeviceKeyUpload, | ||||
device_to_remove: Option<String>, | device_to_remove: Option<String>, | ||||
▲ Show 20 Lines • Show All 43 Lines • Show Last 20 Lines |