@@ -839,11 +839,12 @@ pub(crate) async fn post(
839839 )
840840 . into_response ( ) ) ;
841841 }
842-
842+ let mut is_new_user = true ;
843843 let user = if provider. allow_existing_users {
844844 // If the provider allows existing users, we can use the existing user
845845 let existing_user = repo. user ( ) . find_by_username ( & username) . await ?;
846846 if existing_user. is_some ( ) {
847+ is_new_user = false ;
847848 existing_user. unwrap ( )
848849 } else {
849850 REGISTRATION_COUNTER
@@ -862,16 +863,19 @@ pub(crate) async fn post(
862863 . await ?;
863864 }
864865
865- // And schedule the job to provision it
866- let mut job = ProvisionUserJob :: new ( & user) ;
867-
868- // If we have a display name, set it during provisioning
869- if let Some ( name) = display_name {
870- job = job. set_display_name ( name) ;
866+ //create user in synapse only if needed
867+ if is_new_user {
868+ // And schedule the job to provision it
869+ let mut job = ProvisionUserJob :: new ( & user) ;
870+
871+ // If we have a display name, set it during provisioning
872+ if let Some ( name) = display_name {
873+ job = job. set_display_name ( name) ;
874+ }
875+
876+ repo. queue_job ( ) . schedule_job ( & mut rng, & clock, job) . await ?;
871877 }
872878
873- repo. queue_job ( ) . schedule_job ( & mut rng, & clock, job) . await ?;
874-
875879 // If we have an email, add it to the user
876880 if let Some ( email) = email {
877881 repo. user_email ( )
0 commit comments