Added UserAttribute crd to control user attributes (#9)
This commit is contained in:
67
src/lldap.rs
67
src/lldap.rs
@@ -8,14 +8,17 @@ use lldap_auth::opaque::AuthenticationError;
|
||||
use lldap_auth::registration::ServerRegistrationStartResponse;
|
||||
use lldap_auth::{opaque, registration};
|
||||
use queries::{
|
||||
AddUserToGroup, AddUserToGroupVariables, CreateGroup, CreateGroupVariables, CreateUser,
|
||||
CreateUserVariables, DeleteGroup, DeleteGroupVariables, DeleteUser, DeleteUserVariables,
|
||||
GetGroups, GetUser, GetUserVariables, Group, RemoveUserFromGroup, RemoveUserFromGroupVariables,
|
||||
User,
|
||||
AddUserToGroup, AddUserToGroupVariables, AttributeSchema, CreateGroup, CreateGroupVariables,
|
||||
CreateUser, CreateUserAttribute, CreateUserAttributeVariables, CreateUserVariables,
|
||||
DeleteGroup, DeleteGroupVariables, DeleteUser, DeleteUserAttribute,
|
||||
DeleteUserAttributeVariables, DeleteUserVariables, GetGroups, GetUser, GetUserAttributes,
|
||||
GetUserVariables, Group, RemoveUserFromGroup, RemoveUserFromGroupVariables, User,
|
||||
};
|
||||
use reqwest::header::{AUTHORIZATION, HeaderMap, HeaderValue};
|
||||
use tracing::{debug, trace};
|
||||
|
||||
use crate::resources::AttributeType;
|
||||
|
||||
#[derive(thiserror::Error, Debug)]
|
||||
pub enum Error {
|
||||
#[error("Cynic error: {0}")]
|
||||
@@ -285,4 +288,60 @@ impl LldapClient {
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub async fn get_user_attributes(&self) -> Result<Vec<AttributeSchema>> {
|
||||
let operation = GetUserAttributes::build(());
|
||||
|
||||
let response = self
|
||||
.client
|
||||
.post(format!("{}/api/graphql", self.url))
|
||||
.run_graphql(operation)
|
||||
.await?;
|
||||
|
||||
Ok(check_graphql_errors(response)?
|
||||
.schema
|
||||
.user_schema
|
||||
.attributes)
|
||||
}
|
||||
|
||||
pub async fn create_user_attribute(
|
||||
&self,
|
||||
name: &str,
|
||||
r#type: AttributeType,
|
||||
list: bool,
|
||||
visible: bool,
|
||||
editable: bool,
|
||||
) -> Result<()> {
|
||||
let operation = CreateUserAttribute::build(CreateUserAttributeVariables {
|
||||
name,
|
||||
r#type: r#type.into(),
|
||||
list,
|
||||
visible,
|
||||
editable,
|
||||
});
|
||||
|
||||
let response = self
|
||||
.client
|
||||
.post(format!("{}/api/graphql", self.url))
|
||||
.run_graphql(operation)
|
||||
.await?;
|
||||
|
||||
check_graphql_errors(response)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub async fn delete_user_attribute(&self, name: &str) -> Result<()> {
|
||||
let operation = DeleteUserAttribute::build(DeleteUserAttributeVariables { name });
|
||||
|
||||
let response = self
|
||||
.client
|
||||
.post(format!("{}/api/graphql", self.url))
|
||||
.run_graphql(operation)
|
||||
.await?;
|
||||
|
||||
check_graphql_errors(response)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user