Skip to content

Commit 981d718

Browse files
authored
Add Migrate User Password API (#76)
1 parent 4cdf06e commit 981d718

File tree

6 files changed

+176
-4
lines changed

6 files changed

+176
-4
lines changed

src/apis/user_service_api.rs

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,12 @@ pub struct MigrateUserParams {
116116
pub migrate_user_request: crate::models::MigrateUserRequest,
117117
}
118118

119+
/// struct for passing parameters to the method [`migrate_user_password`]
120+
#[derive(Clone, Debug, Default)]
121+
pub struct MigrateUserPasswordParams {
122+
pub migrate_user_password_request: crate::models::MigrateUserPasswordRequest,
123+
}
124+
119125
/// struct for passing parameters to the method [`update_user_email`]
120126
#[derive(Clone, Debug, Default)]
121127
pub struct UpdateUserEmailParams {
@@ -283,6 +289,15 @@ pub enum MigrateUserError {
283289
UnknownValue(serde_json::Value),
284290
}
285291

292+
/// struct for typed errors of method [`migrate_user_password`]
293+
#[derive(Debug, Clone, Serialize, Deserialize)]
294+
#[serde(untagged)]
295+
pub enum MigrateUserPasswordError {
296+
Status400(crate::models::BadMigrateUserPasswordRequest),
297+
Status401(serde_json::Value),
298+
UnknownValue(serde_json::Value),
299+
}
300+
286301
/// struct for typed errors of method [`update_user_email`]
287302
#[derive(Debug, Clone, Serialize, Deserialize)]
288303
#[serde(untagged)]
@@ -1207,6 +1222,58 @@ pub async fn migrate_user(
12071222
}
12081223
}
12091224

1225+
pub async fn migrate_user_password(
1226+
configuration: &configuration::Configuration,
1227+
params: MigrateUserPasswordParams,
1228+
) -> Result<crate::models::SuccessfulResponse, Error<MigrateUserPasswordError>> {
1229+
let local_var_configuration = configuration;
1230+
1231+
// unbox the parameters
1232+
let migrate_user_password_request = params.migrate_user_password_request;
1233+
1234+
let local_var_client = &local_var_configuration.client;
1235+
1236+
let local_var_uri_str = format!(
1237+
"{}/api/backend/v1/migrate_user/password",
1238+
local_var_configuration.base_path
1239+
);
1240+
let mut local_var_req_builder =
1241+
local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
1242+
1243+
if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
1244+
local_var_req_builder =
1245+
local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
1246+
}
1247+
if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
1248+
local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
1249+
};
1250+
local_var_req_builder = local_var_req_builder.header(
1251+
AUTH_HOSTNAME_HEADER,
1252+
local_var_configuration.auth_hostname.to_owned(),
1253+
);
1254+
1255+
local_var_req_builder = local_var_req_builder.json(&migrate_user_password_request);
1256+
1257+
let local_var_req = local_var_req_builder.build()?;
1258+
let local_var_resp = local_var_client.execute(local_var_req).await?;
1259+
1260+
let local_var_status = local_var_resp.status();
1261+
let local_var_content = local_var_resp.text().await?;
1262+
1263+
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
1264+
serde_json::from_str(&local_var_content).map_err(Error::from)
1265+
} else {
1266+
let local_var_entity: Option<MigrateUserPasswordError> =
1267+
serde_json::from_str(&local_var_content).ok();
1268+
let local_var_error = ResponseContent {
1269+
status: local_var_status,
1270+
content: local_var_content,
1271+
entity: local_var_entity,
1272+
};
1273+
Err(Error::ResponseError(local_var_error))
1274+
}
1275+
}
1276+
12101277
pub async fn update_user_email(
12111278
configuration: &configuration::Configuration,
12121279
params: UpdateUserEmailParams,
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*
2+
* propelauth
3+
*
4+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5+
*
6+
* The version of the OpenAPI document: 0.1.0
7+
*
8+
* Generated by: https://openapi-generator.tech
9+
*/
10+
11+
12+
13+
14+
#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
15+
pub struct BadMigrateUserPasswordRequest {
16+
#[serde(rename = "user_id", skip_serializing_if = "Option::is_none")]
17+
pub user_id: Option<Vec<String>>,
18+
#[serde(rename = "password_hash", skip_serializing_if = "Option::is_none")]
19+
pub password_hash: Option<Vec<String>>,
20+
}
21+
22+
impl BadMigrateUserPasswordRequest {
23+
pub fn new() -> BadMigrateUserPasswordRequest {
24+
BadMigrateUserPasswordRequest {
25+
user_id: None,
26+
password_hash: None,
27+
}
28+
}
29+
}
30+
31+
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/*
2+
* propelauth
3+
*
4+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5+
*
6+
* The version of the OpenAPI document: 0.1.0
7+
*
8+
* Generated by: https://openapi-generator.tech
9+
*/
10+
11+
#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
12+
pub struct MigrateUserPasswordRequest {
13+
#[serde(rename = "user_id")]
14+
pub user_id: String,
15+
#[serde(rename = "password_hash")]
16+
pub password_hash: String,
17+
}
18+
19+
impl MigrateUserPasswordRequest {
20+
pub fn new(user_id: String, password_hash: String) -> MigrateUserPasswordRequest {
21+
MigrateUserPasswordRequest {
22+
user_id,
23+
password_hash,
24+
}
25+
}
26+
}

src/models/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ pub mod bad_fetch_users_in_org_query;
2424
pub use self::bad_fetch_users_in_org_query::BadFetchUsersInOrgQuery;
2525
pub mod bad_migrate_user_request;
2626
pub use self::bad_migrate_user_request::BadMigrateUserRequest;
27+
pub mod bad_migrate_user_password_request;
28+
pub use self::bad_migrate_user_password_request::BadMigrateUserPasswordRequest;
2729
pub mod bad_update_org_request;
2830
pub use self::bad_update_org_request::BadUpdateOrgRequest;
2931
pub mod bad_update_password_request;
@@ -67,6 +69,8 @@ pub mod magic_link;
6769
pub use self::magic_link::MagicLink;
6870
pub mod migrate_user_request;
6971
pub use self::migrate_user_request::MigrateUserRequest;
72+
pub mod migrate_user_password_request;
73+
pub use self::migrate_user_password_request::MigrateUserPasswordRequest;
7074
pub mod remove_user_from_org_request;
7175
pub use self::remove_user_from_org_request::RemoveUserFromOrgRequest;
7276
pub mod subscribe_org_to_role_mapping_request;

src/propelauth/errors.rs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::models::{
22
BadCreateAccessTokenError, BadCreateMagicLinkRequest, BadCreateOrgRequest,
33
BadCreateUserRequest, BadFetchOrgQuery, BadFetchUsersByQuery, BadFetchUsersInOrgQuery,
4-
BadMigrateUserRequest, BadUpdateOrgRequest, BadUpdatePasswordRequest,
4+
BadMigrateUserRequest, BadMigrateUserPasswordRequest, BadUpdateOrgRequest, BadUpdatePasswordRequest,
55
BadUpdateUserEmailRequest, BadUpdateUserMetadataRequest,
66
};
77
use thiserror::Error;
@@ -183,6 +183,21 @@ pub enum MigrateUserError {
183183
UnexpectedException,
184184
}
185185

186+
#[derive(Error, Debug, PartialEq, Clone)]
187+
pub enum MigrateUserPasswordError {
188+
#[error("Invalid API Key")]
189+
InvalidApiKey,
190+
191+
#[error("Rate limited by PropelAuth")]
192+
PropelAuthRateLimit,
193+
194+
#[error("Bad request")]
195+
BadRequest(BadMigrateUserPasswordRequest),
196+
197+
#[error("Unexpected exception, please try again")]
198+
UnexpectedException,
199+
}
200+
186201
#[derive(Error, Debug, PartialEq, Clone)]
187202
pub enum CreateMagicLinkError {
188203
#[error("Invalid API Key")]

src/propelauth/user.rs

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@ use crate::apis::user_service_api::{
44
DisableUserParams, EnableUserParams, FetchUserByEmailParams, FetchUserByIdParams,
55
FetchUserByUsernameParams, FetchUsersByEmailsError, FetchUsersByEmailsParams,
66
FetchUsersByIdsError, FetchUsersByIdsParams, FetchUsersByQueryError, FetchUsersByQueryParams,
7-
FetchUsersByUsernamesError, FetchUsersByUsernamesParams, MigrateUserParams,
7+
FetchUsersByUsernamesError, FetchUsersByUsernamesParams, MigrateUserParams, MigrateUserPasswordParams,
88
UpdateUserEmailParams, UpdateUserMetadataParams, UpdateUserPasswordParams,
99
};
1010
use crate::models::{
11-
CreateMagicLinkRequest, CreateUserRequest, CreatedUserResponse, MagicLink, MigrateUserRequest,
11+
CreateMagicLinkRequest, CreateUserRequest, CreatedUserResponse, MagicLink, MigrateUserRequest, MigrateUserPasswordRequest,
1212
UserMetadata, UserPagedResponse,
1313
};
1414
use crate::propelauth::errors::{
1515
BatchFetchError, ClearPasswordError, CreateMagicLinkError, CreateUserError, ErrorsWithNotFound,
16-
FetchByQueryError, MigrateUserError, ResendEmailConfirmationError, UpdatePasswordError,
16+
FetchByQueryError, MigrateUserError, MigrateUserPasswordError, ResendEmailConfirmationError, UpdatePasswordError,
1717
UpdateUserEmailError, UpdateUserMetadataError,
1818
};
1919
use crate::propelauth::helpers::{is_valid_id, map_autogenerated_error};
@@ -543,6 +543,35 @@ impl UserService<'_> {
543543
})
544544
}
545545

546+
pub async fn migrate_user_password(
547+
&self,
548+
migrate_user_password_request: MigrateUserPasswordRequest,
549+
) -> Result<(), MigrateUserPasswordError> {
550+
let params = MigrateUserPasswordParams {
551+
migrate_user_password_request,
552+
};
553+
crate::apis::user_service_api::migrate_user_password(&self.config, params)
554+
.await
555+
.map_err(|err| {
556+
map_autogenerated_error(
557+
err,
558+
MigrateUserPasswordError::UnexpectedException,
559+
|status_code, err_entity| match (status_code.as_u16(), err_entity) {
560+
(
561+
_,
562+
Some(crate::apis::user_service_api::MigrateUserPasswordError::Status400(
563+
bad_request,
564+
)),
565+
) => MigrateUserPasswordError::BadRequest(bad_request),
566+
(401, _) => MigrateUserPasswordError::InvalidApiKey,
567+
(429, _) => MigrateUserPasswordError::PropelAuthRateLimit,
568+
_ => MigrateUserPasswordError::UnexpectedException,
569+
},
570+
)
571+
})?;
572+
Ok(())
573+
}
574+
546575
pub async fn create_magic_link(
547576
&self,
548577
create_magic_link_request: CreateMagicLinkRequest,

0 commit comments

Comments
 (0)