Skip to main content

bitwarden_core/auth/api/request/
access_token_request.rs

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