Emit warning and continue if the to be deleted user does not exist
This commit is contained in:
parent
e858baaa3c
commit
5f746b90a8
|
@ -43,6 +43,10 @@ pub trait ControllerEvents {
|
||||||
async fn user_deleted<T>(&self, obj: &T, username: &str) -> Result<(), Self::Error>
|
async fn user_deleted<T>(&self, obj: &T, username: &str) -> Result<(), Self::Error>
|
||||||
where
|
where
|
||||||
T: Resource<DynamicType = ()> + Sync;
|
T: Resource<DynamicType = ()> + Sync;
|
||||||
|
|
||||||
|
async fn user_not_found<T>(&self, obj: &T, username: &str) -> Result<(), Self::Error>
|
||||||
|
where
|
||||||
|
T: Resource<DynamicType = ()> + Sync;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[async_trait]
|
#[async_trait]
|
||||||
|
@ -99,4 +103,21 @@ impl ControllerEvents for Recorder {
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn user_not_found<T>(&self, obj: &T, username: &str) -> Result<(), Self::Error>
|
||||||
|
where
|
||||||
|
T: Resource<DynamicType = ()> + Sync,
|
||||||
|
{
|
||||||
|
self.publish(
|
||||||
|
&Event {
|
||||||
|
type_: EventType::Warning,
|
||||||
|
reason: "UserNotFound".into(),
|
||||||
|
note: Some(format!("User '{username}' not found")),
|
||||||
|
action: "UserNotFound".into(),
|
||||||
|
secondary: None,
|
||||||
|
},
|
||||||
|
&obj.object_ref(&()),
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ use schemars::JsonSchema;
|
||||||
use serde::de::DeserializeOwned;
|
use serde::de::DeserializeOwned;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use serde_json::json;
|
use serde_json::json;
|
||||||
use tracing::{debug, instrument, trace};
|
use tracing::{debug, instrument, trace, warn};
|
||||||
|
|
||||||
use crate::context::{Context, ControllerEvents};
|
use crate::context::{Context, ControllerEvents};
|
||||||
use crate::lldap;
|
use crate::lldap;
|
||||||
|
@ -244,8 +244,22 @@ impl Reconcile for ServiceUser {
|
||||||
let lldap_client = ctx.lldap_config.build_client().await?;
|
let lldap_client = ctx.lldap_config.build_client().await?;
|
||||||
|
|
||||||
trace!(name, username, "Deleting user");
|
trace!(name, username, "Deleting user");
|
||||||
lldap_client.delete_user(&username).await?;
|
match lldap_client.delete_user(&username).await {
|
||||||
ctx.recorder.user_deleted(self.as_ref(), &username).await?;
|
Err(lldap::Error::GraphQl(err))
|
||||||
|
if err.message == format!("Entity not found: `No such user: '{username}'`") =>
|
||||||
|
{
|
||||||
|
ctx.recorder
|
||||||
|
.user_not_found(self.as_ref(), &username)
|
||||||
|
.await?;
|
||||||
|
warn!(name, username, "User not found");
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
Ok(_) => {
|
||||||
|
ctx.recorder.user_deleted(self.as_ref(), &username).await?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
Err(err) => Err(err),
|
||||||
|
}?;
|
||||||
|
|
||||||
Ok(Action::await_change())
|
Ok(Action::await_change())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user