diff --git a/Cargo.toml b/Cargo.toml index 8da8df3..ef23370 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "propelauth" -version = "0.22.0" +version = "0.22.1" authors = ["support@propelauth.com"] description = "A Rust crate for managing authentication and authorization with support for multi-tenant / B2B products, powered by PropelAuth" keywords = ["authentication", "auth", "authorization", "b2b", "tenant"] diff --git a/src/apis/access_token_service_api.rs b/src/apis/access_token_service_api.rs index 5becbc0..04e4e77 100644 --- a/src/apis/access_token_service_api.rs +++ b/src/apis/access_token_service_api.rs @@ -1,7 +1,7 @@ use reqwest; use super::{configuration, Error}; -use crate::apis::ResponseContent; +use crate::{apis::ResponseContent, propelauth::auth::AUTH_HOSTNAME_HEADER}; /// struct for passing parameters to the method [`create_access_token`] #[derive(Clone, Debug, Default)] @@ -49,6 +49,11 @@ pub async fn create_access_token( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); + local_var_req_builder = local_var_req_builder.json(&create_access_token_request); let local_var_req = local_var_req_builder.build()?; @@ -96,6 +101,11 @@ pub async fn create_access_token_v2( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); + local_var_req_builder = local_var_req_builder.json(&create_access_token_request); let local_var_req = local_var_req_builder.build()?; diff --git a/src/apis/api_key_service_api.rs b/src/apis/api_key_service_api.rs index 9799f90..7b76332 100644 --- a/src/apis/api_key_service_api.rs +++ b/src/apis/api_key_service_api.rs @@ -7,7 +7,7 @@ use hex; use reqwest; -use crate::apis::ResponseContent; +use crate::{apis::ResponseContent, propelauth::auth::AUTH_HOSTNAME_HEADER}; use super::{configuration, Error}; @@ -113,6 +113,7 @@ pub async fn fetch_current_api_keys( if let Some(ref bearer_token) = configuration.bearer_access_token { req_builder = req_builder.bearer_auth(bearer_token.to_owned()); } + req_builder = req_builder.header(AUTH_HOSTNAME_HEADER, configuration.auth_hostname.to_owned()); let req = req_builder.build()?; let resp = client.execute(req).await?; @@ -168,6 +169,7 @@ pub async fn fetch_archived_api_keys( if let Some(ref bearer_token) = configuration.bearer_access_token { req_builder = req_builder.bearer_auth(bearer_token.to_owned()); } + req_builder = req_builder.header(AUTH_HOSTNAME_HEADER, configuration.auth_hostname.to_owned()); let req = req_builder.build()?; let resp = client.execute(req).await?; @@ -210,6 +212,7 @@ pub async fn fetch_api_key( if let Some(ref bearer_token) = configuration.bearer_access_token { req_builder = req_builder.bearer_auth(bearer_token.to_owned()); } + req_builder = req_builder.header(AUTH_HOSTNAME_HEADER, configuration.auth_hostname.to_owned()); let req = req_builder.build()?; let resp = client.execute(req).await?; @@ -248,6 +251,7 @@ pub async fn create_api_key( if let Some(ref bearer_token) = configuration.bearer_access_token { req_builder = req_builder.bearer_auth(bearer_token.to_owned()); } + req_builder = req_builder.header(AUTH_HOSTNAME_HEADER, configuration.auth_hostname.to_owned()); req_builder = req_builder.json(¶ms); @@ -293,6 +297,7 @@ pub async fn update_api_key( if let Some(ref bearer_token) = configuration.bearer_access_token { req_builder = req_builder.bearer_auth(bearer_token.to_owned()); } + req_builder = req_builder.header(AUTH_HOSTNAME_HEADER, configuration.auth_hostname.to_owned()); req_builder = req_builder.json(¶ms); @@ -337,6 +342,7 @@ pub async fn delete_api_key( if let Some(ref bearer_token) = configuration.bearer_access_token { req_builder = req_builder.bearer_auth(bearer_token.to_owned()); } + req_builder = req_builder.header(AUTH_HOSTNAME_HEADER, configuration.auth_hostname.to_owned()); let req = req_builder.build()?; let resp = client.execute(req).await?; @@ -375,6 +381,7 @@ pub async fn validate_api_key( if let Some(ref bearer_token) = configuration.bearer_access_token { req_builder = req_builder.bearer_auth(bearer_token.to_owned()); } + req_builder = req_builder.header(AUTH_HOSTNAME_HEADER, configuration.auth_hostname.to_owned()); req_builder = req_builder.json(¶ms); diff --git a/src/apis/auth_service_api.rs b/src/apis/auth_service_api.rs index 33c4e64..61f9133 100644 --- a/src/apis/auth_service_api.rs +++ b/src/apis/auth_service_api.rs @@ -4,16 +4,14 @@ * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 0.1.0 - * + * * Generated by: https://openapi-generator.tech */ - use reqwest; -use crate::apis::ResponseContent; -use super::{Error, configuration}; - +use super::{configuration, Error}; +use crate::{apis::ResponseContent, propelauth::auth::AUTH_HOSTNAME_HEADER}; /// struct for typed errors of method [`token_verification_metadata`] #[derive(Debug, Clone, Serialize, Deserialize)] @@ -23,24 +21,33 @@ pub enum TokenVerificationMetadataError { UnknownValue(serde_json::Value), } - -pub async fn token_verification_metadata(configuration: &configuration::Configuration) -> Result> { +pub async fn token_verification_metadata( + configuration: &configuration::Configuration, +) -> Result> { let local_var_configuration = configuration; // unbox the parameters - let local_var_client = &local_var_configuration.client; - let local_var_uri_str = format!("{}/api/backend/v1/token_verification_metadata", local_var_configuration.base_path); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); + let local_var_uri_str = format!( + "{}/api/backend/v1/token_verification_metadata", + local_var_configuration.base_path + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { - local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + local_var_req_builder = + local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); } if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -51,9 +58,13 @@ pub async fn token_verification_metadata(configuration: &configuration::Configur if !local_var_status.is_client_error() && !local_var_status.is_server_error() { serde_json::from_str(&local_var_content).map_err(Error::from) } else { - let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); - let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; Err(Error::ResponseError(local_var_error)) } } - diff --git a/src/apis/configuration.rs b/src/apis/configuration.rs index 0ecd05e..37a79f9 100644 --- a/src/apis/configuration.rs +++ b/src/apis/configuration.rs @@ -4,17 +4,16 @@ * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 0.1.0 - * + * * Generated by: https://openapi-generator.tech */ - use reqwest; - #[derive(Debug, Clone)] pub struct Configuration { pub base_path: String, + pub auth_hostname: String, pub user_agent: Option, pub client: reqwest::Client, pub basic_auth: Option, @@ -32,18 +31,17 @@ pub struct ApiKey { pub key: String, } - impl Default for Configuration { fn default() -> Self { Configuration { base_path: "http://localhost".to_owned(), + auth_hostname: "http://localhost".to_owned(), user_agent: Some("OpenAPI-Generator/0.1.0/rust".to_owned()), client: reqwest::Client::new(), basic_auth: None, oauth_access_token: None, bearer_access_token: None, api_key: None, - } } } diff --git a/src/apis/org_service_api.rs b/src/apis/org_service_api.rs index 7cd5669..a0fbe97 100644 --- a/src/apis/org_service_api.rs +++ b/src/apis/org_service_api.rs @@ -13,6 +13,7 @@ use reqwest; use super::{configuration, Error}; use crate::apis::ResponseContent; use crate::models::{FetchOrgOrderBy, SuccessfulResponse}; +use crate::propelauth::auth::AUTH_HOSTNAME_HEADER; /// struct for passing parameters to the method [`add_user_to_org`] #[derive(Clone, Debug, Default)] @@ -328,6 +329,11 @@ pub async fn add_user_to_org( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); + local_var_req_builder = local_var_req_builder.json(&add_user_to_org_request); let local_var_req = local_var_req_builder.build()?; @@ -376,6 +382,10 @@ pub async fn allow_org_to_enable_saml( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -422,6 +432,11 @@ pub async fn change_user_role_in_org( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); + local_var_req_builder = local_var_req_builder.json(&change_user_role_in_org_request); let local_var_req = local_var_req_builder.build()?; @@ -466,6 +481,11 @@ pub async fn create_org( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); + local_var_req_builder = local_var_req_builder.json(&create_org_request); let local_var_req = local_var_req_builder.build()?; @@ -514,6 +534,10 @@ pub async fn disallow_saml( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -562,6 +586,10 @@ pub async fn create_saml_connection_link( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); let request = serde_json::json!({ "expires_in_seconds": expires_in_seconds, @@ -788,6 +816,10 @@ pub async fn fetch_org( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -829,6 +861,10 @@ pub async fn fetch_custom_role_mappings( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -892,6 +928,10 @@ pub async fn fetch_pending_invites( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -938,6 +978,11 @@ pub async fn revoke_pending_org_invite( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); + local_var_req_builder = local_var_req_builder.json(&revoke_pending_org_invite_request); let local_var_req = local_var_req_builder.build()?; @@ -1016,6 +1061,10 @@ pub async fn fetch_orgs_by_query( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -1085,6 +1134,10 @@ pub async fn fetch_users_in_org( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -1131,6 +1184,11 @@ pub async fn remove_user_from_org( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); + local_var_req_builder = local_var_req_builder.json(&remove_user_from_org_request); let local_var_req = local_var_req_builder.build()?; @@ -1180,6 +1238,11 @@ pub async fn update_org( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); + local_var_req_builder = local_var_req_builder.json(&update_org_request); let local_var_req = local_var_req_builder.build()?; @@ -1229,6 +1292,11 @@ pub async fn subscribe_org_to_role_mapping( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); + local_var_req_builder = local_var_req_builder.json(&update_org_request); let local_var_req = local_var_req_builder.build()?; @@ -1277,6 +1345,10 @@ pub async fn delete_org( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; diff --git a/src/apis/user_service_api.rs b/src/apis/user_service_api.rs index e02d8a5..303bbb2 100644 --- a/src/apis/user_service_api.rs +++ b/src/apis/user_service_api.rs @@ -12,6 +12,7 @@ use reqwest; use super::{configuration, Error, UserFacingError}; use crate::models::{FetchUsersOrderBy, ResendEmailConfirmationRequest}; +use crate::propelauth::auth::AUTH_HOSTNAME_HEADER; use crate::{apis::ResponseContent, models::InviteUserToOrgRequest}; /// struct for passing parameters to the method [`create_magic_link`] @@ -357,6 +358,11 @@ pub async fn create_magic_link( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); + local_var_req_builder = local_var_req_builder.json(&create_magic_link_request); let local_var_req = local_var_req_builder.build()?; @@ -401,6 +407,11 @@ pub async fn create_user( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); + local_var_req_builder = local_var_req_builder.json(&create_user_request); let local_var_req = local_var_req_builder.build()?; @@ -449,6 +460,10 @@ pub async fn delete_user( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -496,6 +511,10 @@ pub async fn disable_user( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -541,6 +560,11 @@ pub async fn resend_email_confirmation( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); + local_var_req_builder = local_var_req_builder.json(&request); let local_var_req = local_var_req_builder.build()?; @@ -586,6 +610,10 @@ pub async fn logout_all_user_sessions( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -633,6 +661,10 @@ pub async fn disable_user2fa( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -680,6 +712,10 @@ pub async fn enable_user( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -732,6 +768,10 @@ pub async fn fetch_user_by_email( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -784,6 +824,10 @@ pub async fn fetch_user_by_id( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -836,6 +880,10 @@ pub async fn fetch_user_by_username( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -887,6 +935,11 @@ pub async fn fetch_users_by_emails( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); + local_var_req_builder = local_var_req_builder.json(&emails_query); let local_var_req = local_var_req_builder.build()?; @@ -939,6 +992,11 @@ pub async fn fetch_users_by_ids( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); + local_var_req_builder = local_var_req_builder.json(&user_ids_query); let local_var_req = local_var_req_builder.build()?; @@ -1015,6 +1073,10 @@ pub async fn fetch_users_by_query( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -1066,6 +1128,11 @@ pub async fn fetch_users_by_usernames( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); + local_var_req_builder = local_var_req_builder.json(&usernames_query); let local_var_req = local_var_req_builder.build()?; @@ -1113,6 +1180,11 @@ pub async fn migrate_user( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); + local_var_req_builder = local_var_req_builder.json(&migrate_user_request); let local_var_req = local_var_req_builder.build()?; @@ -1162,6 +1234,11 @@ pub async fn update_user_email( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); + local_var_req_builder = local_var_req_builder.json(&update_email_request); let local_var_req = local_var_req_builder.build()?; @@ -1211,6 +1288,11 @@ pub async fn update_user_metadata( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); + local_var_req_builder = local_var_req_builder.json(&update_metadata_request); let local_var_req = local_var_req_builder.build()?; @@ -1260,6 +1342,11 @@ pub async fn update_user_password( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); + local_var_req_builder = local_var_req_builder.json(&update_password_request); let local_var_req = local_var_req_builder.build()?; @@ -1305,6 +1392,10 @@ pub async fn clear_user_password( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -1349,6 +1440,10 @@ pub async fn enable_user_can_create_orgs( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -1393,6 +1488,10 @@ pub async fn disable_user_can_create_orgs( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -1439,6 +1538,11 @@ pub async fn invite_user_to_org( if let Some(ref local_var_token) = local_var_configuration.bearer_access_token { local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); }; + local_var_req_builder = local_var_req_builder.header( + AUTH_HOSTNAME_HEADER, + local_var_configuration.auth_hostname.to_owned(), + ); + local_var_req_builder = local_var_req_builder.json(&invite_user_to_org_request); let local_var_req = local_var_req_builder.build()?; diff --git a/src/propelauth/auth.rs b/src/propelauth/auth.rs index 0f11800..238eeb2 100644 --- a/src/propelauth/auth.rs +++ b/src/propelauth/auth.rs @@ -12,6 +12,9 @@ use crate::propelauth::org::OrgService; use crate::propelauth::token::TokenService; use crate::propelauth::user::UserService; +static BACKEND_API_BASE_URL: &str = "https://propelauth-api.com"; +pub(crate) static AUTH_HOSTNAME_HEADER: &str = "X-Propelauth-url"; + /// The main entrypoint of this library. /// All authentication, authorization and API requests starts from this struct #[derive(Debug, Clone)] @@ -25,9 +28,12 @@ impl PropelAuth { /// Initializes the PropelAuth library without making any external requests. This contrasts /// with `fetch_and_init` which will fetch the metadata needed to validate access tokens pub fn init(opts: AuthOptionsWithTokenVerification) -> Result { - let auth_url = validate_auth_url(&opts.auth_url)?; + let auth_hostname = validate_auth_url_extract_hostname(&opts.auth_url)?; + let issuer = "https://".to_string() + &auth_hostname; + let configuration = Configuration { - base_path: auth_url.clone(), + base_path: BACKEND_API_BASE_URL.to_string(), + auth_hostname, bearer_access_token: Some(opts.api_key), ..Default::default() }; @@ -35,16 +41,19 @@ impl PropelAuth { Ok(PropelAuth { config: configuration, token_verification_metadata: opts.manual_token_verification_metadata, - issuer: auth_url, + issuer, }) } /// Initializes the PropelAuth library by making a single external request. This contrasts /// with `init` where you manually specify the metadata needed to validate access tokens pub async fn fetch_and_init(opts: AuthOptions) -> Result { - let auth_url = validate_auth_url(&opts.auth_url)?; + let auth_hostname = validate_auth_url_extract_hostname(&opts.auth_url)?; + let issuer = "https://".to_string() + &auth_hostname; + let configuration = Configuration { - base_path: auth_url.clone(), + base_path: BACKEND_API_BASE_URL.to_string(), + auth_hostname, bearer_access_token: Some(opts.api_key), ..Default::default() }; @@ -66,7 +75,7 @@ impl PropelAuth { Ok(PropelAuth { config: configuration, token_verification_metadata, - issuer: auth_url, + issuer, }) } @@ -107,45 +116,43 @@ impl PropelAuth { } } -fn validate_auth_url(auth_url: &str) -> Result { +fn validate_auth_url_extract_hostname(auth_url: &str) -> Result { Ok(Url::parse(auth_url) .map_err(|_| InitializationError::InvalidAuthUrl)? - .origin() - .ascii_serialization()) + .host_str() + .ok_or(InitializationError::InvalidAuthUrl)? + .to_string()) } #[cfg(test)] mod tests { - use crate::propelauth::auth::validate_auth_url; + use crate::propelauth::auth::validate_auth_url_extract_hostname; use crate::propelauth::errors::InitializationError; #[test] fn bad_auth_url_is_rejected() { assert_eq!( Some(InitializationError::InvalidAuthUrl), - validate_auth_url("not.a.url").err() + validate_auth_url_extract_hostname("not.a.url").err() ); assert_eq!( Some(InitializationError::InvalidAuthUrl), - validate_auth_url("fake").err() + validate_auth_url_extract_hostname("fake").err() ); } #[test] - fn auth_urls_are_canonicalized() { + fn test_extract_hostname() { assert_eq!( - Some("https://blah.com".to_string()), - validate_auth_url("https://blah.com").ok() + Some("blah.com".to_string()), + validate_auth_url_extract_hostname("https://blah.com").ok() ); - assert_eq!( - Some("https://www.blah.com".to_string()), - validate_auth_url("https://www.blah.com/").ok() - ); + assert!(validate_auth_url_extract_hostname("blah").is_err()); assert_eq!( - Some("https://app.blah.co.uk".to_string()), - validate_auth_url("https://app.blah.co.uk/more").ok() + Some("app.blah.co.uk".to_string()), + validate_auth_url_extract_hostname("https://app.blah.co.uk/more").ok() ); } }