]> Untitled Git - lemmy.git/commitdiff
Fix unapproved users being able to log in after registration mode set to closed....
authorDessalines <dessalines@users.noreply.github.com>
Wed, 14 Jun 2023 23:02:17 +0000 (19:02 -0400)
committerGitHub <noreply@github.com>
Wed, 14 Jun 2023 23:02:17 +0000 (19:02 -0400)
- Fixes #3095

crates/api_common/src/utils.rs
crates/api_crud/src/user/create.rs

index 522a3564793cba6b76c373788d0b71d7023f3973..1912221e14ab5e3b0f76222fc59ad748e804e447 100644 (file)
@@ -523,7 +523,8 @@ pub async fn check_registration_application(
   local_site: &LocalSite,
   pool: &DbPool,
 ) -> Result<(), LemmyError> {
-  if local_site.registration_mode == RegistrationMode::RequireApplication
+  if (local_site.registration_mode == RegistrationMode::RequireApplication
+    || local_site.registration_mode == RegistrationMode::Closed)
     && !local_user_view.local_user.accepted_application
     && !local_user_view.person.admin
   {
index c888339309a157482c627b2b217432a4877a8b87..d0aa05acc46132cc932f1fcdaa849449bfb6a724 100644 (file)
@@ -103,12 +103,17 @@ impl PerformCrud for Register {
       .await
       .map_err(|e| LemmyError::from_error_message(e, "user_already_exists"))?;
 
+    // Automatically set their application as accepted, if they created this with open registration.
+    // Also fixes a bug which allows users to log in when registrations are changed to closed.
+    let accepted_application = Some(!require_registration_application);
+
     // Create the local user
     let local_user_form = LocalUserInsertForm::builder()
       .person_id(inserted_person.id)
       .email(data.email.as_deref().map(str::to_lowercase))
       .password_encrypted(data.password.to_string())
       .show_nsfw(Some(data.show_nsfw))
+      .accepted_application(accepted_application)
       .build();
 
     let inserted_local_user = match LocalUser::create(context.pool(), &local_user_form).await {