bitwarden_core/auth/api/response/
identity_success_response.rs

1use std::{collections::HashMap, num::NonZeroU32};
2
3use bitwarden_api_identity::models::KdfType;
4use serde::{Deserialize, Serialize};
5use serde_json::Value;
6
7#[derive(Serialize, Deserialize, Debug, PartialEq)]
8pub struct IdentityTokenSuccessResponse {
9    pub access_token: String,
10    pub expires_in: u64,
11    pub refresh_token: Option<String>,
12    token_type: String,
13
14    #[serde(rename = "privateKey", alias = "PrivateKey")]
15    pub(crate) private_key: Option<String>,
16    #[serde(alias = "Key")]
17    pub(crate) key: Option<String>,
18    #[serde(rename = "twoFactorToken")]
19    two_factor_token: Option<String>,
20    #[serde(alias = "Kdf")]
21    kdf: KdfType,
22    #[serde(
23        rename = "kdfIterations",
24        alias = "KdfIterations",
25        default = "bitwarden_crypto::default_pbkdf2_iterations"
26    )]
27    kdf_iterations: NonZeroU32,
28
29    #[serde(rename = "resetMasterPassword", alias = "ResetMasterPassword")]
30    pub reset_master_password: bool,
31    #[serde(rename = "forcePasswordReset", alias = "ForcePasswordReset")]
32    pub force_password_reset: bool,
33    #[serde(rename = "apiUseKeyConnector", alias = "ApiUseKeyConnector")]
34    api_use_key_connector: Option<bool>,
35    #[serde(rename = "keyConnectorUrl", alias = "KeyConnectorUrl")]
36    key_connector_url: Option<String>,
37
38    /// Stores unknown api response fields
39    extra: Option<HashMap<String, Value>>,
40}
41
42#[cfg(test)]
43mod test {
44    use bitwarden_crypto::default_pbkdf2_iterations;
45
46    use super::*;
47
48    impl Default for IdentityTokenSuccessResponse {
49        fn default() -> Self {
50            Self {
51                access_token: Default::default(),
52                expires_in: Default::default(),
53                refresh_token: Default::default(),
54                token_type: Default::default(),
55                private_key: Default::default(),
56                key: Default::default(),
57                two_factor_token: Default::default(),
58                kdf: KdfType::default(),
59                kdf_iterations: default_pbkdf2_iterations(),
60                reset_master_password: Default::default(),
61                force_password_reset: Default::default(),
62                api_use_key_connector: Default::default(),
63                key_connector_url: Default::default(),
64                extra: Default::default(),
65            }
66        }
67    }
68}