bitwarden_core/auth/api/request/
auth_request_token_request.rs1use log::debug;
2use serde::{Deserialize, Serialize};
3use uuid::Uuid;
4
5use crate::{
6 auth::{api::response::IdentityTokenResponse, login::LoginError},
7 client::ApiConfigurations,
8 DeviceType,
9};
10
11#[derive(Serialize, Deserialize, Debug)]
12pub struct AuthRequestTokenRequest {
13 scope: String,
14 client_id: String,
15 #[serde(rename = "deviceType")]
16 device_type: u8,
17 #[serde(rename = "deviceIdentifier")]
18 device_identifier: String,
19 #[serde(rename = "deviceName")]
20 device_name: String,
21 grant_type: String,
22 #[serde(rename = "username")]
23 email: String,
24 #[serde(rename = "authRequest")]
25 auth_request_id: Uuid,
26 #[serde(rename = "password")]
27 access_code: String,
28}
29
30#[allow(dead_code)]
31impl AuthRequestTokenRequest {
32 pub fn new(
33 email: &str,
34 auth_request_id: &Uuid,
35 access_code: &str,
36 device_type: DeviceType,
37 device_identifier: &str,
38 ) -> Self {
39 let obj = Self {
40 scope: "api offline_access".to_string(),
41 client_id: "web".to_string(),
42 device_type: device_type as u8,
43 device_identifier: device_identifier.to_string(),
44 device_name: "chrome".to_string(),
45 grant_type: "password".to_string(),
46 email: email.to_string(),
47 auth_request_id: *auth_request_id,
48 access_code: access_code.to_string(),
49 };
50 debug!("initializing {:?}", obj);
51 obj
52 }
53
54 pub(crate) async fn send(
55 &self,
56 configurations: &ApiConfigurations,
57 ) -> Result<IdentityTokenResponse, LoginError> {
58 super::send_identity_connect_request(configurations, Some(&self.email), &self).await
59 }
60}