Skip to content

Commit 28ef1b9

Browse files
committed
Take the localpart instead of the MXID in HomeserverConnection methods
1 parent dee5902 commit 28ef1b9

File tree

15 files changed

+241
-194
lines changed

15 files changed

+241
-194
lines changed

crates/handlers/src/admin/v1/users/unlock.rs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,8 @@ pub async fn handler(
8282
.ok_or(RouteError::NotFound(id))?;
8383

8484
// Call the homeserver synchronously to unlock the user
85-
let mxid = homeserver.mxid(&user.username);
8685
homeserver
87-
.reactivate_user(&mxid)
86+
.reactivate_user(&user.username)
8887
.await
8988
.map_err(RouteError::Homeserver)?;
9089

@@ -125,10 +124,9 @@ mod tests {
125124

126125
// Also provision the user on the homeserver, because this endpoint will try to
127126
// reactivate it
128-
let mxid = state.homeserver_connection.mxid(&user.username);
129127
state
130128
.homeserver_connection
131-
.provision_user(&ProvisionRequest::new(&mxid, &user.sub))
129+
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
132130
.await
133131
.unwrap();
134132

@@ -161,21 +159,24 @@ mod tests {
161159
repo.save().await.unwrap();
162160

163161
// Provision the user on the homeserver
164-
let mxid = state.homeserver_connection.mxid(&user.username);
165162
state
166163
.homeserver_connection
167-
.provision_user(&ProvisionRequest::new(&mxid, &user.sub))
164+
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
168165
.await
169166
.unwrap();
170167
// but then deactivate it
171168
state
172169
.homeserver_connection
173-
.delete_user(&mxid, true)
170+
.delete_user(&user.username, true)
174171
.await
175172
.unwrap();
176173

177174
// The user should be deactivated on the homeserver
178-
let mx_user = state.homeserver_connection.query_user(&mxid).await.unwrap();
175+
let mx_user = state
176+
.homeserver_connection
177+
.query_user(&user.username)
178+
.await
179+
.unwrap();
179180
assert!(mx_user.deactivated);
180181

181182
let request = Request::post(format!("/api/admin/v1/users/{}/unlock", user.id))
@@ -190,7 +191,11 @@ mod tests {
190191
serde_json::json!(null)
191192
);
192193
// The user should be reactivated on the homeserver
193-
let mx_user = state.homeserver_connection.query_user(&mxid).await.unwrap();
194+
let mx_user = state
195+
.homeserver_connection
196+
.query_user(&user.username)
197+
.await
198+
.unwrap();
194199
assert!(!mx_user.deactivated);
195200
}
196201

crates/handlers/src/compat/login.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,11 @@ pub(crate) async fn post(
403403
// Now we can create the device on the homeserver, without holding the
404404
// transaction
405405
if let Err(err) = homeserver
406-
.create_device(&user_id, device.as_str(), session.human_name.as_deref())
406+
.create_device(
407+
&user.username,
408+
device.as_str(),
409+
session.human_name.as_deref(),
410+
)
407411
.await
408412
{
409413
// Something went wrong, let's end this session and schedule a device sync
@@ -804,10 +808,9 @@ mod tests {
804808
.add(&mut rng, &state.clock, &user, version, hash, None)
805809
.await
806810
.unwrap();
807-
let mxid = state.homeserver_connection.mxid(&user.username);
808811
state
809812
.homeserver_connection
810-
.provision_user(&ProvisionRequest::new(mxid, &user.sub))
813+
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
811814
.await
812815
.unwrap();
813816

@@ -1030,10 +1033,9 @@ mod tests {
10301033
.await
10311034
.unwrap();
10321035

1033-
let mxid = state.homeserver_connection.mxid(&user.username);
10341036
state
10351037
.homeserver_connection
1036-
.provision_user(&ProvisionRequest::new(mxid, &user.sub))
1038+
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
10371039
.await
10381040
.unwrap();
10391041

@@ -1134,10 +1136,9 @@ mod tests {
11341136
.unwrap();
11351137
repo.save().await.unwrap();
11361138

1137-
let mxid = state.homeserver_connection.mxid(&user.username);
11381139
state
11391140
.homeserver_connection
1140-
.provision_user(&ProvisionRequest::new(mxid, &user.sub))
1141+
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
11411142
.await
11421143
.unwrap();
11431144

crates/handlers/src/graphql/model/matrix.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ impl MatrixUser {
2727
conn: &C,
2828
user: &str,
2929
) -> Result<MatrixUser, anyhow::Error> {
30-
let mxid = conn.mxid(user);
30+
let info = conn.query_user(user).await?;
3131

32-
let info = conn.query_user(&mxid).await?;
32+
let mxid = conn.mxid(user);
3333

3434
Ok(MatrixUser {
3535
mxid,

crates/handlers/src/graphql/mutations/compat_session.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,10 +187,9 @@ impl CompatSessionMutations {
187187
.await?;
188188

189189
// Update the device on the homeserver side
190-
let mxid = homeserver.mxid(&user.username);
191190
if let Some(device) = session.device.as_ref() {
192191
homeserver
193-
.update_device_display_name(&mxid, device.as_str(), &input.human_name)
192+
.update_device_display_name(&user.username, device.as_str(), &input.human_name)
194193
.await
195194
.context("Failed to provision device")?;
196195
}

crates/handlers/src/graphql/mutations/matrix.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,6 @@ impl MatrixMutations {
9393
repo.cancel().await?;
9494

9595
let conn = state.homeserver_connection();
96-
let mxid = conn.mxid(&user.username);
9796

9897
if let Some(display_name) = &input.display_name {
9998
// Let's do some basic validation on the display name
@@ -105,11 +104,11 @@ impl MatrixMutations {
105104
return Ok(SetDisplayNamePayload::Invalid);
106105
}
107106

108-
conn.set_displayname(&mxid, display_name)
107+
conn.set_displayname(&user.username, display_name)
109108
.await
110109
.context("Failed to set display name")?;
111110
} else {
112-
conn.unset_displayname(&mxid)
111+
conn.unset_displayname(&user.username)
113112
.await
114113
.context("Failed to unset display name")?;
115114
}

crates/handlers/src/graphql/mutations/oauth2_session.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -212,11 +212,10 @@ impl OAuth2SessionMutations {
212212
repo.user().acquire_lock_for_sync(&user).await?;
213213

214214
// Look for devices to provision
215-
let mxid = homeserver.mxid(&user.username);
216215
for scope in &*session.scope {
217216
if let Some(device) = Device::from_scope_token(scope) {
218217
homeserver
219-
.create_device(&mxid, device.as_str(), None)
218+
.create_device(&user.username, device.as_str(), None)
220219
.await
221220
.context("Failed to provision device")?;
222221
}
@@ -331,11 +330,10 @@ impl OAuth2SessionMutations {
331330
.await?;
332331

333332
// Update the device on the homeserver side
334-
let mxid = homeserver.mxid(&user.username);
335333
for scope in &*session.scope {
336334
if let Some(device) = Device::from_scope_token(scope) {
337335
homeserver
338-
.update_device_display_name(&mxid, device.as_str(), &input.human_name)
336+
.update_device_display_name(&user.username, device.as_str(), &input.human_name)
339337
.await
340338
.context("Failed to provision device")?;
341339
}

crates/handlers/src/graphql/mutations/user.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -586,8 +586,7 @@ impl UserMutations {
586586
};
587587

588588
// Call the homeserver synchronously to unlock the user
589-
let mxid = matrix.mxid(&user.username);
590-
matrix.reactivate_user(&mxid).await?;
589+
matrix.reactivate_user(&user.username).await?;
591590

592591
// Now unlock the user in our database
593592
let user = repo.user().unlock(user).await?;
@@ -653,9 +652,7 @@ impl UserMutations {
653652
};
654653

655654
let conn = state.homeserver_connection();
656-
let mxid = conn.mxid(&user.username);
657-
658-
conn.allow_cross_signing_reset(&mxid)
655+
conn.allow_cross_signing_reset(&user.username)
659656
.await
660657
.context("Failed to allow cross-signing reset")?;
661658

crates/handlers/src/graphql/tests.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -529,10 +529,9 @@ async fn test_oauth2_client_credentials(pool: PgPool) {
529529
// XXX: we don't run the task worker here, so even though the addUser mutation
530530
// should have scheduled a job to provision the user, it won't run in the test,
531531
// so we need to do it manually
532-
let mxid = state.homeserver_connection.mxid("alice");
533532
state
534533
.homeserver_connection
535-
.provision_user(&ProvisionRequest::new(mxid, user_id))
534+
.provision_user(&ProvisionRequest::new("alice", user_id))
536535
.await
537536
.unwrap();
538537

crates/handlers/src/oauth2/introspection.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -634,10 +634,9 @@ mod tests {
634634
.await
635635
.unwrap();
636636

637-
let mxid = state.homeserver_connection.mxid(&user.username);
638637
state
639638
.homeserver_connection
640-
.provision_user(&ProvisionRequest::new(mxid, &user.sub))
639+
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
641640
.await
642641
.unwrap();
643642

@@ -835,10 +834,9 @@ mod tests {
835834
.await
836835
.unwrap();
837836

838-
let mxid = state.homeserver_connection.mxid(&user.username);
839837
state
840838
.homeserver_connection
841-
.provision_user(&ProvisionRequest::new(mxid, &user.sub))
839+
.provision_user(&ProvisionRequest::new(&user.username, &user.sub))
842840
.await
843841
.unwrap();
844842

crates/handlers/src/oauth2/token.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -575,11 +575,14 @@ async fn authorization_code_grant(
575575
.await?;
576576

577577
// Look for device to provision
578-
let mxid = homeserver.mxid(&browser_session.user.username);
579578
for scope in &*session.scope {
580579
if let Some(device) = Device::from_scope_token(scope) {
581580
homeserver
582-
.create_device(&mxid, device.as_str(), Some(&device_name))
581+
.create_device(
582+
&browser_session.user.username,
583+
device.as_str(),
584+
Some(&device_name),
585+
)
583586
.await
584587
.map_err(RouteError::ProvisionDeviceFailed)?;
585588
}
@@ -951,11 +954,10 @@ async fn device_code_grant(
951954
.await?;
952955

953956
// Look for device to provision
954-
let mxid = homeserver.mxid(&browser_session.user.username);
955957
for scope in &*session.scope {
956958
if let Some(device) = Device::from_scope_token(scope) {
957959
homeserver
958-
.create_device(&mxid, device.as_str(), None)
960+
.create_device(&browser_session.user.username, device.as_str(), None)
959961
.await
960962
.map_err(RouteError::ProvisionDeviceFailed)?;
961963
}

0 commit comments

Comments
 (0)