Skip to main content

bitwarden_core/auth/api/request/
access_token_request.rs

1use bitwarden_api_api::Configuration;
2use serde::{Deserialize, Serialize};
3use tracing::debug;
4use uuid::Uuid;
5
6use crate::auth::{api::response::IdentityTokenResponse, login::LoginError};
7
8#[derive(Serialize, Deserialize, Debug)]
9pub(crate) struct AccessTokenRequest {
10    scope: String,
11    client_id: String,
12    client_secret: String,
13    grant_type: String,
14}
15
16impl AccessTokenRequest {
17    pub(crate) fn new(access_token_id: Uuid, client_secret: &String) -> Self {
18        let obj = Self {
19            scope: "api.secrets".to_string(),
20            client_id: access_token_id.to_string(),
21            client_secret: client_secret.to_string(),
22            grant_type: "client_credentials".to_string(),
23        };
24        debug!(?obj, "initializing");
25        obj
26    }
27
28    pub(crate) async fn send(
29        &self,
30        identity_config: &Configuration,
31    ) -> Result<IdentityTokenResponse, LoginError> {
32        super::send_identity_connect_request(identity_config, &self).await
33    }
34}