Skip to main content

bitwarden_emergency_access/
emergency_access_client.rs

1use std::sync::Arc;
2
3use bitwarden_core::{
4    Client, FromClient,
5    client::{ApiConfigurations, FromClientPart},
6    key_management::KeySlotIds,
7};
8use bitwarden_crypto::KeyStore;
9#[cfg(feature = "wasm")]
10use wasm_bindgen::prelude::wasm_bindgen;
11
12/// Client for emergency access operations, performed as the grantee.
13#[cfg_attr(feature = "wasm", wasm_bindgen)]
14pub struct EmergencyAccessClient {
15    pub(crate) api_configurations: Arc<ApiConfigurations>,
16    pub(crate) key_store: KeyStore<KeySlotIds>,
17}
18
19impl FromClient for EmergencyAccessClient {
20    fn from_client(client: &Client) -> Self {
21        Self {
22            api_configurations: client.get_part(),
23            key_store: client.get_part(),
24        }
25    }
26}
27
28/// Extension trait that exposes [`EmergencyAccessClient`] on [`Client`].
29pub trait EmergencyAccessClientExt {
30    /// Returns an [`EmergencyAccessClient`].
31    fn emergency_access(&self) -> EmergencyAccessClient;
32}
33
34impl EmergencyAccessClientExt for Client {
35    fn emergency_access(&self) -> EmergencyAccessClient {
36        EmergencyAccessClient::from_client(self)
37    }
38}