1
0
mirror of https://github.com/matrix-org/matrix-authentication-service.git synced 2025-08-09 04:22:45 +03:00

Proactively provision users on registration & sync threepids

This commit is contained in:
Quentin Gliech
2023-04-04 17:06:10 +02:00
parent 169d7ce6a2
commit 8a2be43fe7
16 changed files with 411 additions and 25 deletions

View File

@@ -25,9 +25,10 @@ use mas_axum_utils::{
};
use mas_keystore::Encrypter;
use mas_storage::{
job::{JobRepositoryExt, ProvisionUserJob},
upstream_oauth2::{UpstreamOAuthLinkRepository, UpstreamOAuthSessionRepository},
user::{BrowserSessionRepository, UserRepository},
BoxClock, BoxRepository, BoxRng,
BoxClock, BoxRepository, BoxRng, RepositoryAccess,
};
use mas_templates::{
EmptyContext, TemplateContext, Templates, UpstreamExistingLinkContext, UpstreamRegister,
@@ -285,6 +286,11 @@ pub(crate) async fn post(
(None, None, FormData::Register { username }) => {
let user = repo.user().add(&mut rng, &clock, username).await?;
repo.job()
.schedule_job(ProvisionUserJob::new(&user))
.await?;
repo.upstream_oauth_link()
.associate_to_user(&link, &user)
.await?;

View File

@@ -26,7 +26,7 @@ use mas_data_model::BrowserSession;
use mas_keystore::Encrypter;
use mas_router::Route;
use mas_storage::{
job::{JobRepositoryExt, VerifyEmailJob},
job::{JobRepositoryExt, ProvisionUserJob, VerifyEmailJob},
user::UserEmailRepository,
BoxClock, BoxRepository, BoxRng, Clock, RepositoryAccess,
};
@@ -179,6 +179,12 @@ pub(crate) async fn post(
}
};
// XXX: It shouldn't hurt to do this even if the user didn't change their emails
// in a meaningful way
repo.job()
.schedule_job(ProvisionUserJob::new(&session.user))
.await?;
let reply = render(
&mut rng,
&clock,

View File

@@ -24,7 +24,11 @@ use mas_axum_utils::{
};
use mas_keystore::Encrypter;
use mas_router::Route;
use mas_storage::{user::UserEmailRepository, BoxClock, BoxRepository, BoxRng};
use mas_storage::{
job::{JobRepositoryExt, ProvisionUserJob},
user::UserEmailRepository,
BoxClock, BoxRepository, BoxRng, RepositoryAccess,
};
use mas_templates::{EmailVerificationPageContext, TemplateContext, Templates};
use serde::Deserialize;
use ulid::Ulid;
@@ -133,6 +137,10 @@ pub(crate) async fn post(
.mark_as_verified(&clock, user_email)
.await?;
repo.job()
.schedule_job(ProvisionUserJob::new(&session.user))
.await?;
repo.save().await?;
let destination = query.go_next_or_default(&mas_router::AccountEmails);

View File

@@ -28,7 +28,7 @@ use mas_keystore::Encrypter;
use mas_policy::PolicyFactory;
use mas_router::Route;
use mas_storage::{
job::{JobRepositoryExt, VerifyEmailJob},
job::{JobRepositoryExt, ProvisionUserJob, VerifyEmailJob},
user::{BrowserSessionRepository, UserEmailRepository, UserPasswordRepository, UserRepository},
BoxClock, BoxRepository, BoxRng, RepositoryAccess,
};
@@ -205,6 +205,10 @@ pub(crate) async fn post(
.schedule_job(VerifyEmailJob::new(&user_email))
.await?;
repo.job()
.schedule_job(ProvisionUserJob::new(&user))
.await?;
repo.save().await?;
let cookie_jar = cookie_jar.set_session(&session);