bitwarden_pam/
pam_client.rs1use std::sync::Arc;
2
3use bitwarden_core::{Client, FromClient, client::ApiConfigurations, key_management::KeySlotIds};
4use bitwarden_crypto::KeyStore;
5
6use crate::{
7 access_requests::AccessRequestsClient, access_rules::AccessRulesClient,
8 approvals::ApprovalsClient, leases::LeasesClient, rotation::RotationClient,
9};
10
11#[derive(Clone, FromClient)]
13#[bitwarden_ffi::wasm_object]
14pub struct PamClient {
15 pub(crate) key_store: KeyStore<KeySlotIds>,
16 pub(crate) api_configurations: Arc<ApiConfigurations>,
17}
18
19#[bitwarden_ffi::wasm_export]
20impl PamClient {
21 pub fn access_rules(&self) -> AccessRulesClient {
23 AccessRulesClient {
24 api_configurations: self.api_configurations.clone(),
25 }
26 }
27
28 pub fn access_requests(&self) -> AccessRequestsClient {
30 AccessRequestsClient {
31 api_configurations: self.api_configurations.clone(),
32 }
33 }
34
35 pub fn approvals(&self) -> ApprovalsClient {
37 ApprovalsClient {
38 api_configurations: self.api_configurations.clone(),
39 }
40 }
41
42 pub fn leases(&self) -> LeasesClient {
44 LeasesClient {
45 key_store: self.key_store.clone(),
46 api_configurations: self.api_configurations.clone(),
47 }
48 }
49
50 pub fn rotation(&self) -> RotationClient {
52 RotationClient {
53 key_store: self.key_store.clone(),
54 api_configurations: self.api_configurations.clone(),
55 }
56 }
57}
58
59pub trait PamClientExt {
61 fn pam(&self) -> PamClient;
63}
64
65impl PamClientExt for Client {
66 fn pam(&self) -> PamClient {
67 PamClient::from_client(self)
68 }
69}