diff --git a/templates/zerver/app/invite_user.html b/templates/zerver/app/invite_user.html index 1e070159d3..f3220e348d 100644 --- a/templates/zerver/app/invite_user.html +++ b/templates/zerver/app/invite_user.html @@ -21,6 +21,7 @@ diff --git a/zerver/tests/test_signup.py b/zerver/tests/test_signup.py index 4f96db0579..769737ec67 100644 --- a/zerver/tests/test_signup.py +++ b/zerver/tests/test_signup.py @@ -727,6 +727,7 @@ class InviteUserTest(InviteUserBase): self.submit_reg_form_for_user(invitee, "password") invitee_profile = self.nonreg_user('alice') self.assertTrue(invitee_profile.is_realm_admin) + self.assertFalse(invitee_profile.is_guest) def test_invite_user_as_admin_from_normal_account(self) -> None: """ @@ -749,6 +750,30 @@ class InviteUserTest(InviteUserBase): response = self.invite(invitee, ["Denmark"], invite_as=100) self.assert_json_error(response, "Must be invited as an valid type of user") + def test_successful_invite_user_as_guest_from_normal_account(self) -> None: + self.login(self.example_email('hamlet')) + invitee = self.nonreg_email('alice') + self.assert_json_success(self.invite(invitee, ["Denmark"], + invite_as=PreregistrationUser.INVITE_AS['GUEST_USER'])) + self.assertTrue(find_key_by_email(invitee)) + + self.submit_reg_form_for_user(invitee, "password") + invitee_profile = self.nonreg_user('alice') + self.assertFalse(invitee_profile.is_realm_admin) + self.assertTrue(invitee_profile.is_guest) + + def test_successful_invite_user_as_guest_from_admin_account(self) -> None: + self.login(self.example_email('iago')) + invitee = self.nonreg_email('alice') + self.assert_json_success(self.invite(invitee, ["Denmark"], + invite_as=PreregistrationUser.INVITE_AS['GUEST_USER'])) + self.assertTrue(find_key_by_email(invitee)) + + self.submit_reg_form_for_user(invitee, "password") + invitee_profile = self.nonreg_user('alice') + self.assertFalse(invitee_profile.is_realm_admin) + self.assertTrue(invitee_profile.is_guest) + def test_successful_invite_user_with_name(self) -> None: """ A call to /json/invites with valid parameters causes an invitation diff --git a/zerver/views/registration.py b/zerver/views/registration.py index 6800bb40ce..e49028c2d6 100644 --- a/zerver/views/registration.py +++ b/zerver/views/registration.py @@ -81,6 +81,7 @@ def accounts_register(request: HttpRequest) -> HttpResponse: realm_creation = prereg_user.realm_creation password_required = prereg_user.password_required is_realm_admin = prereg_user.invited_as == PreregistrationUser.INVITE_AS['REALM_ADMIN'] or realm_creation + is_guest = prereg_user.invited_as == PreregistrationUser.INVITE_AS['GUEST_USER'] try: validators.validate_email(email) @@ -280,7 +281,9 @@ def accounts_register(request: HttpRequest) -> HttpResponse: # make it respect invited_as_admin / is_realm_admin. else: user_profile = do_create_user(email, password, realm, full_name, short_name, - prereg_user=prereg_user, is_realm_admin=is_realm_admin, + prereg_user=prereg_user, + is_realm_admin=is_realm_admin, + is_guest=is_guest, tos_version=settings.TOS_VERSION, timezone=timezone, newsletter_data={"IP": request.META['REMOTE_ADDR']},