Update ProvisionRequest with locked flag
This commit is contained in:
@@ -166,7 +166,7 @@ pub async fn handler(
|
||||
let user = repo.user().add(&mut rng, &clock, params.username).await?;
|
||||
|
||||
homeserver
|
||||
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
|
||||
.provision_user(&ProvisionRequest::new(&user.username, &user.sub, false))
|
||||
.await
|
||||
.map_err(RouteError::Homeserver)?;
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ mod tests {
|
||||
// because this endpoint will try to reactivate it
|
||||
state
|
||||
.homeserver_connection
|
||||
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
|
||||
.provision_user(&ProvisionRequest::new(&user.username, &user.sub, false))
|
||||
.await
|
||||
.unwrap();
|
||||
state
|
||||
@@ -181,7 +181,7 @@ mod tests {
|
||||
// Provision the user on the homeserver
|
||||
state
|
||||
.homeserver_connection
|
||||
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
|
||||
.provision_user(&ProvisionRequest::new(&user.username, &user.sub, false))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
|
||||
@@ -935,7 +935,7 @@ mod tests {
|
||||
.unwrap();
|
||||
state
|
||||
.homeserver_connection
|
||||
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
|
||||
.provision_user(&ProvisionRequest::new(&user.username, &user.sub, locked))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
@@ -1238,7 +1238,7 @@ mod tests {
|
||||
|
||||
state
|
||||
.homeserver_connection
|
||||
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
|
||||
.provision_user(&ProvisionRequest::new(&user.username, &user.sub, false))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
@@ -1343,7 +1343,7 @@ mod tests {
|
||||
|
||||
state
|
||||
.homeserver_connection
|
||||
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
|
||||
.provision_user(&ProvisionRequest::new(&user.username, &user.sub, false))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
|
||||
@@ -223,7 +223,7 @@ async fn create_test_user(state: &TestState, username: &str) -> mas_data_model::
|
||||
// Provision the user on the homeserver
|
||||
state
|
||||
.homeserver_connection
|
||||
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
|
||||
.provision_user(&ProvisionRequest::new(&user.username, &user.sub, false))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
|
||||
@@ -530,7 +530,7 @@ async fn test_oauth2_client_credentials(pool: PgPool) {
|
||||
// so we need to do it manually
|
||||
state
|
||||
.homeserver_connection
|
||||
.provision_user(&ProvisionRequest::new("alice", user_id))
|
||||
.provision_user(&ProvisionRequest::new("alice", user_id, false))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
|
||||
@@ -805,7 +805,7 @@ mod tests {
|
||||
|
||||
state
|
||||
.homeserver_connection
|
||||
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
|
||||
.provision_user(&ProvisionRequest::new(&user.username, &user.sub, false))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
@@ -1005,7 +1005,7 @@ mod tests {
|
||||
|
||||
state
|
||||
.homeserver_connection
|
||||
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
|
||||
.provision_user(&ProvisionRequest::new(&user.username, &user.sub, false))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
|
||||
@@ -141,6 +141,8 @@ impl HomeserverConnection for SynapseConnection {
|
||||
set_emails: Option<Vec<String>>,
|
||||
#[serde(skip_serializing_if = "std::ops::Not::not")]
|
||||
unset_emails: bool,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
locked: Option<bool>,
|
||||
}
|
||||
|
||||
let mut body = Request {
|
||||
@@ -151,6 +153,7 @@ impl HomeserverConnection for SynapseConnection {
|
||||
unset_avatar_url: false,
|
||||
set_emails: None,
|
||||
unset_emails: false,
|
||||
locked: Some(request.locked()),
|
||||
};
|
||||
|
||||
request.on_displayname(|displayname| match displayname {
|
||||
|
||||
@@ -33,6 +33,7 @@ enum FieldAction<T> {
|
||||
pub struct ProvisionRequest {
|
||||
localpart: String,
|
||||
sub: String,
|
||||
locked: bool,
|
||||
displayname: FieldAction<String>,
|
||||
avatar_url: FieldAction<String>,
|
||||
emails: FieldAction<Vec<String>>,
|
||||
@@ -45,11 +46,13 @@ impl ProvisionRequest {
|
||||
///
|
||||
/// * `localpart` - The localpart of the user to provision.
|
||||
/// * `sub` - The `sub` of the user, aka the internal ID.
|
||||
/// * `locked` - Whether the user is locked.
|
||||
#[must_use]
|
||||
pub fn new(localpart: impl Into<String>, sub: impl Into<String>) -> Self {
|
||||
pub fn new(localpart: impl Into<String>, sub: impl Into<String>, locked: bool) -> Self {
|
||||
Self {
|
||||
localpart: localpart.into(),
|
||||
sub: sub.into(),
|
||||
locked,
|
||||
displayname: FieldAction::DoNothing,
|
||||
avatar_url: FieldAction::DoNothing,
|
||||
emails: FieldAction::DoNothing,
|
||||
@@ -68,6 +71,12 @@ impl ProvisionRequest {
|
||||
&self.localpart
|
||||
}
|
||||
|
||||
/// Get the locked flag of the user to provision
|
||||
#[must_use]
|
||||
pub fn locked(&self) -> bool {
|
||||
self.locked
|
||||
}
|
||||
|
||||
/// Ask to set the displayname of the user.
|
||||
///
|
||||
/// # Parameters
|
||||
|
||||
@@ -234,7 +234,7 @@ mod tests {
|
||||
assert!(conn.upsert_device("test", device, None).await.is_err());
|
||||
assert!(conn.delete_device("test", device).await.is_err());
|
||||
|
||||
let request = ProvisionRequest::new("test", "test")
|
||||
let request = ProvisionRequest::new("test", "test", false)
|
||||
.set_displayname("Test User".into())
|
||||
.set_avatar_url("mxc://example.org/1234567890".into())
|
||||
.set_emails(vec!["test@example.org".to_owned()]);
|
||||
|
||||
@@ -60,8 +60,12 @@ impl RunnableJob for ProvisionUserJob {
|
||||
.into_iter()
|
||||
.map(|email| email.email)
|
||||
.collect();
|
||||
let mut request =
|
||||
ProvisionRequest::new(user.username.clone(), user.sub.clone()).set_emails(emails);
|
||||
let mut request = ProvisionRequest::new(
|
||||
user.username.clone(),
|
||||
user.sub.clone(),
|
||||
user.locked_at.is_some(),
|
||||
)
|
||||
.set_emails(emails);
|
||||
|
||||
if let Some(display_name) = self.display_name_to_set() {
|
||||
request = request.set_displayname(display_name.to_owned());
|
||||
|
||||
Reference in New Issue
Block a user