casdoor_sdk_rust/user/
mod.rs1mod models;
2
3pub use models::*;
4
5use crate::{Body, Method, QueryResult, Sdk, SdkError, SdkResult, StatusCode, NO_BODY};
6
7impl Sdk {
8 pub async fn get_users(&self, query_args: UserQueryArgs) -> SdkResult<QueryResult<User>> {
10 self.get_models(None, query_args).await
11 }
12
13 pub async fn get_user_groups(&self, query_args: UserGroupQueryArgs) -> SdkResult<QueryResult<UserGroup>> {
14 self.get_models(None, query_args).await
15 }
16
17 pub async fn get_user_count(&self, is_online: QueryUserSet) -> SdkResult<i64> {
18 self.request_data(
19 Method::GET,
20 self.get_url_path("get-user-count", true, [("isOnline", is_online.to_string())])?,
21 NO_BODY,
22 )
23 .await?
24 .into_data_default()
25 }
26
27 pub async fn get_user(&self, args: GetUserArgs) -> SdkResult<Option<User>> {
28 match (args.user_id, args.name, args.email, args.phone) {
29 (Some(user_id), None, None, None) => self.get_user_by_user_id(user_id).await,
30 (None, Some(name), None, None) => self.get_model_by_name(name).await,
31 (None, None, Some(email), None) => self.get_user_by_email(email).await,
32 (None, None, None, Some(phone)) => self.get_user_by_phone(phone).await,
33 _ => Err(SdkError::new(
34 StatusCode::BAD_REQUEST,
35 r##"The parameters "uid", "name", "email" and "phone" can and must only pass one."##,
36 )),
37 }
38 }
39
40 pub async fn get_user_by_email(&self, email: String) -> SdkResult<Option<User>> {
41 self.request_data(Method::GET, format!("/api/get-user?owner={}&email={}", self.org_name, email), NO_BODY)
42 .await?
43 .into_data()
44 }
45
46 pub async fn get_user_by_phone(&self, phone: String) -> SdkResult<Option<User>> {
47 self.request_data(Method::GET, format!("/api/get-user?owner={}&phone={}", self.org_name, phone), NO_BODY)
48 .await?
49 .into_data()
50 }
51
52 pub async fn get_user_by_user_id(&self, user_id: String) -> SdkResult<Option<User>> {
53 self.request_data(
54 Method::GET,
55 format!("/api/get-user?owner={}&userId={}", self.org_name, user_id),
56 NO_BODY,
57 )
58 .await?
59 .into_data()
60 }
61
62 pub async fn set_user_password(&self, mut args: SetPasswordArgs) -> SdkResult<()> {
64 args.user_owner.get_or_insert(self.org_name.to_owned());
65 self.request_data(Method::POST, "/api/set-password", Body::Form(&serde_urlencoded::to_string(args)?))
66 .await?
67 .into_data_default()
68 }
69}